{"version":3,"sources":["../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/virtual-dom.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/react/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/constant.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/classes.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/classes.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/common/utility.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../../../src/ILogger.ts","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/Prompt.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/withRouter.js","../../modules/hooks.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/tslib/tslib.es6.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","../node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../../../src/Utils.ts","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/common/operations.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-charts/src/common/model/base.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","../../../src/JavaScriptSDK/CoreUtils.ts","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/util.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/reactstrap/es/utils.js","../node_modules/react-hook-form/dist/react-hook-form.es.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/pop-up/dialog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/classnames/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../../../src/JavaScriptSDK/EnvUtils.ts","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../../../src/JavaScriptSDK.Enums/LoggingEnums.ts","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../../../src/JavaScriptSDK/TelemetryPluginChain.ts","../../../src/JavaScriptSDK/ProcessTelemetryContext.ts","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","../node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/react-dom/index.js","../../../src/Loggers.ts","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../../src/TextMessageFormat.ts","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/default-locale.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/invariant/browser.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/moment/moment.js","../../../src/Errors.ts","../../../src/HttpClient.ts","../../../src/FetchHttpClient.ts","../../../src/IHubProtocol.ts","../../../src/XhrHttpClient.ts","../../../src/DefaultHttpClient.ts","../../../src/Subject.ts","../../../src/HubConnection.ts","../../../src/ITransport.ts","../../../src/DefaultReconnectPolicy.ts","../../../src/AbortController.ts","../../../src/LongPollingTransport.ts","../../../src/ServerSentEventsTransport.ts","../../../src/WebSocketTransport.ts","../../../src/HttpConnection.ts","../../../src/JsonHubProtocol.ts","../../../src/HubConnectionBuilder.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../../../src/JavaScriptSDK/DiagnosticLogger.ts","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","../node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","../node_modules/webpack/buildin/global.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/service-locator.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/renderer-factory.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","../node_modules/react-router-last-location/dist/index.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/react-transition-group/index.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/process/browser.js","../node_modules/path-to-regexp/index.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../../../src/JavaScriptSDK/BaseTelemetryPlugin.ts","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","../node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","../node_modules/@syncfusion/ej2-excel-export/src/column.js","../node_modules/@syncfusion/ej2-excel-export/src/row.js","../node_modules/@syncfusion/ej2-excel-export/src/image.js","../node_modules/@syncfusion/ej2-excel-export/src/cell.js","../node_modules/@syncfusion/ej2-compression/src/zip-archive.js","../node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","../node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","../node_modules/@syncfusion/ej2-excel-export/src/workbook.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/object-assign/index.js","../node_modules/react-is/index.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/reactstrap/es/CarouselItem.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/contextMenu-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/upload-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/react-text-mask/dist/reactTextMask.js","../../../src/HandshakeProtocol.ts","../node_modules/create-react-context/lib/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/react-gtm-module/dist/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@reach/router/es/lib/utils.js","../node_modules/@reach/router/es/lib/history.js","../node_modules/@reach/router/es/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/webpack/buildin/module.js","../node_modules/create-react-context/lib/implementation.js","../node_modules/gud/index.js","../node_modules/warning/warning.js","../node_modules/react-gtm-module/dist/TagManager.js","../node_modules/react-gtm-module/dist/Snippets.js","../node_modules/react-gtm-module/dist/utils/warn.js","../node_modules/dotenv/lib/main.js","../node_modules/path-browserify/index.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-react-splitbuttons/src/drop-down-button/dropdownbutton.component.js","../node_modules/reactstrap/es/NavItem.js","../node_modules/reactstrap/es/NavLink.js","../node_modules/reactstrap/es/Navbar.js","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/NavbarToggler.js","../node_modules/reactstrap/es/NavbarBrand.js","../node_modules/reactstrap/es/Carousel.js","../node_modules/reactstrap/es/CarouselIndicators.js","../node_modules/reactstrap/es/CarouselCaption.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/ajax-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/details-view-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/navigation-pane-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/search-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/navigation-pane.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/actions/toolbar.js","../node_modules/@syncfusion/ej2-react-popups/src/dialog/dialog.component.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/reactstrap/es/Row.js","../node_modules/@syncfusion/ej2-react-inputs/src/uploader/uploader.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/auto-complete/autocomplete.component.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/image-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/link-module.js","../node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/series-directive.js","../node_modules/@syncfusion/ej2-react-buttons/src/radio-button/radiobutton.component.js","../../src/ReactPlugin.ts","../../src/withAITracking.tsx","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/aggregates-directive.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/aggregate-columns-directive.js","../node_modules/@syncfusion/ej2-react-popups/src/tooltip/tooltip.component.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-chooser.js","../../../src/JavaScriptSDK/TelemetryHelpers.ts","../../../src/JavaScriptSDK/ChannelController.ts","../../src/Enums.ts","../../../src/JavaScriptSDK/BaseCore.ts","../../../src/JavaScriptSDK.Enums/EventsDiscardedReason.ts","../../../src/JavaScriptSDK/NotificationManager.ts","../../../src/JavaScriptSDK/AppInsightsCore.ts","../../src/RequestResponseHeaders.ts","../../../../src/Telemetry/Common/DataSanitizer.ts","../../src/Util.ts","../../../../../src/Interfaces/Contracts/Generated/DataPointType.ts","../../src/Constants.ts","../../src/ConnectionStringParser.ts","../../../../../src/Interfaces/Contracts/Generated/Base.ts","../../../../../src/Interfaces/Contracts/Generated/Data.ts","../../../../src/Telemetry/Common/Envelope.ts","../../../../../src/Interfaces/Contracts/Generated/Envelope.ts","../../../../../src/Interfaces/Contracts/Generated/Domain.ts","../../../../../src/Interfaces/Contracts/Generated/EventData.ts","../../../src/Telemetry/Event.ts","../../../../../src/Interfaces/Contracts/Generated/StackFrame.ts","../../../../../src/Interfaces/Contracts/Generated/ExceptionDetails.ts","../../../src/Telemetry/Exception.ts","../../../../../src/Interfaces/Contracts/Generated/ExceptionData.ts","../../../../../src/Interfaces/Contracts/Generated/MetricData.ts","../../../../../src/Interfaces/Contracts/Generated/DataPoint.ts","../../../../../src/Interfaces/Contracts/Generated/SeverityLevel.ts","../../../../src/Telemetry/Common/DataPoint.ts","../../../src/Telemetry/Metric.ts","../../../../../src/Interfaces/Contracts/Generated/PageViewData.ts","../../../src/Telemetry/PageView.ts","../../../src/Telemetry/RemoteDependencyData.ts","../../../../../src/Interfaces/Contracts/Generated/RemoteDependencyData.ts","../../../src/Telemetry/Trace.ts","../../../../../src/Interfaces/Contracts/Generated/MessageData.ts","../../../src/Telemetry/PageViewPerformance.ts","../../../../../src/Interfaces/Contracts/Generated/PageViewPerfData.ts","../../../../src/Telemetry/Common/Data.ts","../../../src/Interfaces/IConfig.ts","../../../../../src/Interfaces/Contracts/Generated/ContextTagKeys.ts","../../src/TelemetryItemCreator.ts","../../../src/Interfaces/PartAExtensions.ts","../../src/applicationinsights-common.ts","../../../out/lib/src/DynamicProto.js","../PageViewManager.js","../PageVisitTimeManager.js","../PageViewPerformanceManager.js","../ApplicationInsights.js","../../src/SendBuffer.ts","../../src/EnvelopeCreator.ts","../../src/Serializer.ts","../../src/Offline.ts","../../../../src/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.ts","../../../../src/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.ts","../../../src/TelemetryProcessors/Sample.ts","../../src/Sender.ts","../../../src/Context/Session.ts","../../../src/Context/Application.ts","../../../src/Context/Device.ts","../../../src/Context/Internal.ts","../../../src/Context/User.ts","../../../src/Context/Location.ts","../../../src/Context/TelemetryTrace.ts","../../src/TelemetryContext.ts","../../src/PropertiesPlugin.ts","../../../src/JavaScriptSDK/InstrumentHooks.ts","../ajaxRecord.js","../TraceParent.js","../ajax.js","../Initialization.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/selection/selection.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/config.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/dom-node.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/lists.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-methods.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/nodecutter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/link.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/alignments.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/indents.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/image.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/table.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/isformatted.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-commands.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/undo.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/ms-word-clean-up.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-text.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/editor-manager.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/html-formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/iframe-content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/xhtml-validation.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-editor.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/keyboard.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/view-source.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/interface.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/execute-command-callback.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/iframe-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/inline-mode.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-attributes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/full-screen.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/dialog-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/rich-text-editor.js","../node_modules/@syncfusion/ej2-react-richtexteditor/src/rich-text-editor/richtexteditor.component.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","../node_modules/@syncfusion/ej2-charts/src/common/model/data.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","../node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/export.js","../node_modules/@syncfusion/ej2-charts/src/chart/chart.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/chart.component.js","../node_modules/@syncfusion/ej2-layouts/src/splitter/splitter.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/large-icons-view.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/actions/breadcrumb-bar.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/pop-up/context-menu.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/default-locale.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/file-manager.js","../node_modules/@syncfusion/ej2-react-filemanager/src/file-manager/filemanager.component.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/toolbar-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/intersection-observer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/virtual-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/details-view.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/popup-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/quick-toolbar.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/multi-select/multiselect.component.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/maskedtextbox/maskedtextbox.component.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","../node_modules/@syncfusion/ej2-buttons/src/chips/chip-list.js","../node_modules/@syncfusion/ej2-react-buttons/src/chips/chiplist.component.js","../node_modules/@syncfusion/ej2-navigations/src/sidebar/sidebar.js","../node_modules/@syncfusion/ej2-react-navigations/src/sidebar/sidebar.component.js","../node_modules/@syncfusion/ej2-navigations/src/accordion/accordion.js","../node_modules/@syncfusion/ej2-react-navigations/src/accordion/accordion.component.js","../node_modules/@syncfusion/ej2-calendars/src/daterangepicker/daterangepicker.js","../node_modules/@syncfusion/ej2-react-calendars/src/daterangepicker/daterangepicker.component.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-tree/drop-down-tree.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-tree/dropdowntree.component.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","../node_modules/@syncfusion/ej2-splitbuttons/src/progress-button/progress-button.js","../node_modules/@syncfusion/ej2-react-splitbuttons/src/progress-button/progressbutton.component.js","../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","../node_modules/@syncfusion/ej2-react-notifications/src/toast/toast.component.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-navigations/src/menu/menu.js","../node_modules/@syncfusion/ej2-react-navigations/src/menu/menu.component.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","../node_modules/@syncfusion/ej2-lists/src/list-view/list-view.js","../node_modules/@syncfusion/ej2-react-lists/src/list-view/listview.component.js"],"names":["instances","uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","undefined","Function","prototype","bind","apply","getValue","nameSpace","obj","value","splits","replace","split","i","length","isUndefined","setValue","key","keys","start","fromObj","isNullOrUndefined","deleteObject","isObject","constructor","getEnumValue","enumObject","enumValue","merge","source","destination","temrObj","tempProp","_i","keys_1","Object","indexOf","Array","isArray","extend","copied","first","second","deep","result","arguments","_loop_1","arguments_1","obj1","forEach","clone","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","hasOwnProperty","getUniqueID","definedName","debounce","eventFunction","delay","out","_this","this","args","later","clearTimeout","setTimeout","compareElementParent","child","parent","document","parentNode","throwError","message","Error","e","stack","print","element","printWindow","div","createElement","links","slice","call","getElementsByTagName","querySelectorAll","blinks","l","len","push","reference","window","open","appendChild","cloneNode","outerHTML","write","innerHTML","close","focus","interval","setInterval","ready","clearInterval","formatUnit","match","getElement","Node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getInstance","component","elem","querySelector","_a","inst","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","prop","res","propKeys_1","getSymbolRegex","props","regexStr","map","str","join","RegExp","getSymbolMatch","ret","matchKeys_1","constructRegex","val","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","Math","floor","julilanOffset","julianNumber","b","c","d","tempMonth","modifiedJulianDate","z","cyc","j","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","date","toGregorian","julianDate","a","gDay","gMonth","gYear","Date","abbreviateRegexGlobal","weekdayKey","timeSetter","m","h","H","s","f","datePartMatcher","DateFormat","dateFormat","culture","option","cldr","dependable","base","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","test","isServerRendered","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","type","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parser","parserObject","patternMatch_1","char","weekday","monthIndex","days","designator","eText","era","timeZone","isNaN","intDateFormatter","options","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","toString","substring","substr","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","abs","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","p","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","text","range","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","min","max","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","toFixed","lead","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","pos","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","parseInt","getDateObject","setMilliseconds","y","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","num","retOptions","props_1","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","end","Infinity","NaN","exponent","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","context","ranArray","boundedEvents","on","property","handler","id","cntxt","notExist","isHandlerPresent","off","splice","indexLocation","notify","argument","successHandler","errorHandler","name","blazorCallback","curObject_1","objs","index","isTrigger","obj_1","promise","then","data","isJson","JSON","parse","dateReviver","catch","destroy","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","setCulture","setCurrencyCode","currencyCode","loadCldr","data_1","getNumericObject","locale","numSystem","symbPattern","getDefaultDateObject","mode","blazorCultureFormats","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","dPattern","tPattern","calendartype","blazorDefaultObject","defaultObject","dateString","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","customNumberFormat","integerPart","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","3","4","5","C","P","N","A","E","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","minDigits","maxDigits","diff","fractionDigitsPattern","integer","x","minimumIntegerPattern","groupingPattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","Ajax","async","contentType","emitError","url","send","eventArgs","cancel","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","error","readyState","status","statusText","getResponseHeader","responseHeaders","header","headers","exec","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","event","events","isPointer","isTouch","isDevice","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","defineProperty","get","uA","set","enumerable","configurable","info","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","add","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","addEventListener","passive","remove","some","removeEventListener","clearEvents","copyData","shift","trigger","eventProp","eventData_1","event_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","helper","ignorePrefix","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","offset","matchStr","rlStr","addNameSpace","trim","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","ignoreList","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","templateString","compiler","engineObj","propName","templateId","isStringTemplate","blazorId","className","childNodes","updateBlazorTemplate","templateName","comp","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","innerTemplates","getElementsByClassName","tempId","getAttribute","tempElement","setTemplateEngine","classObj","getTemplateEngine","VirtualDOM","Engine","render","simpleRegex","multipleSplitRegex","idClassSelector","selectMapper","assigner","tagName","emptyElements","blockElements","inlineElement","selfClosingElements","fillAttrs","cspElement","nameMapper","startRegex","endRegex","attributeRegex","assignParent","childrens","detach","children","processSelector","selector","curMapper","filter","canPush","existValue","accessElement","ele","selectAll","immediateParent","temp_1","matched","mapper_1","expected","actualValue","concat","ConvertHTMLToJSon","htmlString","isText","results","tagArray","nodeArray","lastVal","getLastValue","contains","all","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","attrs","names","valArr","vObj","length_3","cVal","styleSplit","tagObject","attributes","parent_3","node","parent_4","parent_5","arr","properties","extended","styles","style","append","fromElements","toElement","prepend","vDomSelector","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","splitSelector_1","dParent","descendent","_b","dSelector_1","sel","descendentChild","_c","dParent_1","iCurSelector","_d","parent_1","curParent","setStyleAttribute","SVG_REG","createElementNS","setAttribute","addClass","elements","classes","classList","getClassList","classList_1","curClass","removeClass","classList_2","classArr","isVisible","visibility","offsetWidth","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","executeScript","script","head","removeChild","iKey","select","needsVDOM","querySelectId","charRegex","idList","list","splitId","setId","closest","el","nodeType","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","onPropertyChanged","updateModel","saveChanges","newValue","oldValue","unbind","Uint16Array","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","setImmediate","moduleClass","getModuleName","ej2_instances","getObject","instance","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","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","target","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","curText","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","__extends","extendStatics","setPrototypeOf","__proto__","__","create","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","stop","animation","removeAttribute","animationId","frameId","cancelAnimationFrame","applyAnimation","timeStamp","step","timerId","prevTimeStamp","duration","startAnimation","begin","avg","timingFunction","progress","requestAnimationFrame","performance","now","fail","newProp","oldProp","rippleEffect","rippleOptions","done","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","left","right","top","bottom","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","transform","removeRipple","rippleElements","opacity","enableRipple","isRipple","lastPageID","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","usedModules","arg","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","action","parentKey","complexKeys","isFinal","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","randomId","uniqueID","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","isHistoryChanged","pageID","location","href","history","hash","charCodeAt","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","enableScrollHandler","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","width","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","keyCode","KeyboardEvents","keyPressHandler","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","config","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflow","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","exports","require","_slicedToArray","Symbol","iterator","_arr","_n","_e","_s","next","err","unsupportedIterableToArray","TypeError","_typeof","_objectSpread","ownKeys","getOwnPropertySymbols","_classCallCheck","Constructor","_defineProperties","writable","_createClass","protoProps","staticProps","_possibleConstructorReturn","self","assertThisInitialized","_getPrototypeOf","o","getPrototypeOf","_inherits","subClass","superClass","consoleLogger","log","output","warn","console","baseLogger","Logger","concreteLogger","init","logger","debug","bool","_len","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","cloned","observer","_cloned","defer","rej","makeString","object","t","getLastOfPath","path","Empty","cleanKey","canNotTraverseDeeper","k","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","String","regexEscape","_entityMap","escape","isIE10","ResourceStore","_EventEmitter","ns","defaultNS","_assertThisInitialized","keySeparator","lng","silent","addNamespaces","emit","resources","addResource","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","translator","processor","process","checkedLoadedFor","Translator","services","interpolation","resolved","nsSeparator","namespaces","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy$$1","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","isValidLookup","count","suffix","pluralResolver","getSuffix","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","missingKeyHandler","backendConnector","saveMissing","needsPluralHandling","saveMissingPlurals","getPluralFormsOfKey","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","usedLng","usedNS","skipInterpolation","interpolator","defaultVariables","interpolate","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","code","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","capitalize","string","charAt","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","deprecate","isSupportedCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","find","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","n","2","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","createRules","rules","plurals","PluralResolver","rule","getRule","idx","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","nestingRegexp","replaces","regexSafe","handleFormat","missingInterpolationHandler","lastIndex","_temp","clonedOptions","handleHasOptions","inheritedOptions","optionsString","formatters","doReduce","includes","reduce","v","Connector","backend","store","state","queue","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","q","_getLastOfPath2","pushPath","what","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","tDescription","_format","transformOptions","noop","i18next","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","deferred","changeLanguage","usedCallback","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","fixedT","opts","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","created","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","actionFailure","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchCancel","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","beforeDataBound","beforeOpenColumnChooser","beforeOpenAdaptiveDialog","resizeStart","onResize","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","click","columnVisibilityChanged","scroll","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","columnDragStop","headerDrop","dataSourceModified","refreshComplete","refreshVirtualBlock","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","updateData","saveComplete","deleteComplete","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","beforePdfExport","pdfExportComplete","pdfQueryCellInfo","pdfHeaderQueryCellInfo","contextMenuClick","freezeRender","contextMenuOpen","filterOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","columnDataStateChange","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","columnChooserOpened","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","restoreFocus","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","columnChooserCancelBtnClick","getFilterBarOperator","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","refreshVirtualFrozenHeight","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","refreshVirtualFrozenRows","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","selectRowOnContextOpen","pagerRefresh","closeInline","closeBatch","closeEdit","resetVirtualFocus","refreshVirtualEditFormCells","scrollToEdit","beforeCheckboxRendererQuery","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","frozenContent","frozenHeader","content","table","row","gridChkBox","editedRow","addedRow","changedRecords","addedRecords","deletedRecords","leftRight","frozenRight","frozenLeft","ariaColIndex","ariaRowIndex","tbody","colGroup","beforeOpen","doesImplementInterface","checkFor","valueAccessor","field","column","DataUtil","getUpdateUsingRaf","updateFunction","isExportColumns","exportProperties","columns","updateColumnTypeForExportColumns","gObj","exportColumns","gridColumns","updatecloneRow","grid","nRows","actualRows","vRows","isDataRow","isExpand","isCaptionRow","getCollapsedRowsCount","vcRows","gLen","groupSettings","items","dataRowCnt","agrCnt","indent","gLevel","GroupGuid","childLevels","recursive","nLevel","iterateArrayOrObject","collection","predicate","pred","iterateExtend","array","baseExtend","templateCompiler","baseTemplateComplier","setStyleAndAttributes","customAttributes","copyAttr","literals","exclude","values","setColumnIndex","columnModel","ind","prepareColumns","autoWidth","Column","allowReordering","headerText","foreignKeyValue","foreignKeyField","visible","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","popup","getPosition","getPopupLeftPosition","parentsUntil","isID","inArray","getActualPropFromColl","coll","getUid","appendChildren","calculateAggregate","customAggregate","aggregates","rowHeight","Global","getScrollBarWidth","divNode","cssText","clientWidth","getRowHeight","ceil","isComplexField","getComplexFieldID","setComplexFieldID","isEditable","col","isOldRow","isIdentity","isPrimaryKey","allowEditing","isActionPrevent","dlg","editSettings","showConfirmDialog","wrap","setFormatter","serviceLocator","fmtr","getService","getFormatFunction","setParser","getParserFunction","addRemoveActiveClasses","cells","distinctStringValues","getFilterMenuPostion","dialogObj","elementVisible","dlgWidth","newpos","calculateRelativeBasedPosition","leftPos","getZIndexCalcualtion","zIndex","toogleCheckbox","span","input","previousSibling","checked","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","isForeignKey","lValue","fField","query","Query","fdata","dataSource","DataManager","json","columnData","where","getDatePredicate","operator","matchCase","executeLocal","getColumnByForeignKeyValue","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","Predicate","setSeconds","getSeconds","predicateSt","predicateEnd","and","or","ejpredicate","renderMovable","frzCols","isRowDragable","mEle","childElementCount","isGroupAdaptive","enableVirtualization","isVirtualAdaptive","getCustomDateFormat","colType","intl","getPrintGridModel","hierarchyPrintMode","printGridModel","isFrozen","isFrozenGrid","getFrozenColumns","Print","printGridProp","getColumns","printMode","childGrid","expandedRows","rows_1","getRowsObject","isDetailRow","allowPaging","pageSettings","currentPage","pageSize","gridModel","getExpandedState","extendObjWithFn","getPrototypesOfObj","i_1","cpy","cln","measureColumnDepth","depth","checkDepth","indices","refreshFilteredColsUid","filteredCols","getForeignKeyColumns","enableColumnVirtualization","getColumnModelByFieldName","getColumnByField","getTransformValues","replacedTv","defaultView","applyBiggerTheme","rootElement","alignFrozenEditForm","mTD","fTD","mHeight","fHeight","ensureLastRow","gridObj","cntOffset","getContent","ensureFirstRow","rowTop","getEditedDataIndex","dataIndex","keyField","getPrimaryKeyFieldNames","getCurrentViewRecords","eventPromise","adaptr","UrlAdaptor","dm","adaptor","processQuery","getStateEventArgument","def","Deferred","deffered","ispercentageWidth","getVisibleColumns","percentageCol","undefinedWidthCol","showGroupedColumn","resetRowIndex","rows","rowElms","startIndex","isAltRow","enableAltRow","renderModule","emptyRow","compareChanges","changes","newArray","dataToBeUpdated","assign","setRowElements","contentModule","rowElements","cls","getFrozenMode","freezeRowElements","frozenRightRowElements","splitFrozenRowObjectCells","tableName","getFrozenLeftCount","movable","getMovableColumnsCount","getFrozenRightColumnsCount","frozenMode","rightIndex","mvblIndex","mvblEndIdx","gridActionHandler","force","rowObj","getGridRowObjects","getMovableRowsObject","getFrozenRightRowsObject","getGridRowElements","getAllDataRows","getAllMovableDataRows","getAllFrozenRightDataRows","sliceElements","getCellsByTableName","rowIndex","getFreezeTableName","getMovableDataRows","getFrozenRightDataRows","getDataRows","getCellByColAndRowIndex","setValidationRuels","mRules","frRules","isCustom","validationRules","getMovableTbody","frozenRows","newRowPosition","getMovableHeaderTbody","getMovableContentTbody","getFrozenRightTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","numberFormat","mtch_1","addBiggerDialog","enableAdaptiveUI","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","setDisplayValue","tr","displayVal","isContent","trs","td","addRemoveEventListener","isOn","evt_1","createEditElement","classNames","complexFieldName","getColumnModelByUid","registerEventHandlers","evts","handlers","eventHandlers","removeEventHandlers","clearReactVueTemplates","templates","destroyTemplate","isReact","renderTemplates","timer","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","defineProperties","contentChanged","iframeMouseDown","refreshBegin","toolbarUpdated","bindOnEnd","renderColorPicker","htmlToolbarClick","markdownToolbarClick","destroyColorPicker","keyUp","keyDown","mouseUp","toolbarCreated","toolbarRenderComplete","enableFullScreen","disableFullScreen","dropDownSelect","beforeDropDownItemRender","execCommandCallBack","imageToolbarAction","linkToolbarAction","windowResize","insertLink","unLink","editLink","openLink","updatedToolbarStatus","updateToolbarItem","insertImage","insertCompleted","imageLink","imageAlt","imageDelete","imageCaption","imageSize","sourceCode","updateSource","beforeDropDownOpen","selectionSave","selectionRestore","expandPopupClick","mouseDown","sourceCodeMouseDown","editAreaClick","contentscroll","colorPickerChanged","tableColorPickerChanged","focusChange","selectRange","getSelectedHtml","renderInlineToolbar","paste","rtlMode","createTable","docClick","tableToolbarAction","checkUndo","readOnlyMode","pasteClean","beforeDialogOpen","clearDialogObj","dialogOpen","beforeDialogClose","dialogClose","beforeQuickToolbarOpen","quickToolbarOpen","quickToolbarClose","imageSelected","imageUploading","imageUploadSuccess","imageUploadFailed","imageRemoving","afterImageDelete","xhtmlValidation","beforeImageUpload","resizeInitialized","renderFileManager","beforeImageDrop","dynamicModule","updateTbItemsStatus","showLinkDialog","closeLinkDialog","showImageDialog","closeImageDialog","showTableDialog","closeTableDialog","isFile","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","beforeRequest","skipUpload","afterRequest","layoutRefresh","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","sort","fields","isDescending","sortData","isBreakLabel","label","getVisiblePoints","series","tempPoint","points","tempPoints","pointIndex","rotateTextSize","font","angle","chart","labelText","dy","tspanElement","renderer","SvgRenderer","textCollection","initialClipRect","size","fontStyle","fontFamily","fontWeight","htmlObject","createText","delayRedraw","redraw","svgObject","measureText","createTSpan","box","Size","logBase","showTooltip","areaWidth","isTitleOrLegendEnabled","tooltip","inside","withIn","logWithIn","valueType","withInRange","previousPoint","currentPoint","nextPoint","mX2","xValue","xAxis","mX1","mX3","xStart","visibleRange","xEnd","sum","values_1","subtractThickness","thickness","degreeToLocation","degree","center","radian","PI","ChartLocation","cos","sin","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","centerX","centerY","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","polygon","i2","p1","p2","normal","subArray","valueToCoefficient","delta","isInversed","valueToPolarCoefficient","dateTimeInterval","visibleLabels","createZoomingLabels","isVertical","arrowLocation","direction","opposedPosition","anchor","chartRect","availableSize","scrollBarHeight","scrollbarSettings","enable","zoomingScrollBar","endLabel","startLabel","labelStyle","findDirection","Rect","drawPath","PathOption","themeStyle","crosshairFill","textElement","TextOption","color","crosshairLabel","withInBounds","bounds","getValueXByPoint","getValueYByPoint","findClipRect","clipRect","requireInvertedAxis","yAxis","firstToLowerCase","getMinPointsDelta","seriesCollection","xValues","minVal","seriesMin","minDelta","MAX_VALUE","xAxisName","primaryXAxis","xMin","xMax","index_1","getAnimationFunction","effect","functionName","currentTime","startValue","endValue","markerAnimate","isLabel","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","appendClipElement","clipPath","clipElement","redrawElement","createDefs","triggerLabelRender","tempInterval","argsData","axisLabelRender","isLineBreakLabels","text_1","enableTrim","maxWidth","labelCollection","breakLabels","lineBreakLabelTrim","maximumLabelWidth","textTrim","VisibleLabels","setRange","minimum","maximum","isZoomSet","zoomFactor","zoomPosition","getActualDesiredIntervalsCount","orientation","desiredIntervals","desiredIntervalsCount","maximumLabels","templateAnimate","isRemove","drawSymbol","shape","isChartControl","control","chartRenderer","shapeOption","isChart","dir","xVal","yVal","isBulletChart","sizeBullet","targetWidth","lx","ly","stroke","fill","renderOption","locX","locY","cartesianlarge","cartesiansmall","getAccumulationLegend","calculateLegendShapes","calculateShapes","Int32Array","accReactTemplate","childElement","isTemplate","datalabelGroup","dataLabel","clientRect","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","category","dataLabelCollections","dataLabelModule","calculateTemplateLabelSize","marker","createTemplate","dataLabelId","templateElement","templateFn","templateComplier","getTemplateFunction","tempObject","elementData","reactCallback","getFontStyle","measureElementRect","isReactCallback","findlElement","getPoint","isInverted","pow","xLength","yLength","appendChildElement","isCanvas","isAnimate","forceAnimate","isRect","previousRect","existChild","currentRect","setStyle","animateRectElement","isDiv","yValue","animateRedrawElement","replaceChild","getLabelText","labelFormat","customLabelFormat","seriesType","chartAreaType","drawType","stackedValues","endValues","high","low","median","upperQuartile","lowerQuartile","outliers","liers","useGroupingSeparator","stopTimer","isCollide","collections","isOverlap","calculateRect","textSize","convertToHexCode","componentToHex","g","hex","convertHexToColor","ColorValue","colorNameToHex","isRGBValue","getSaturationColor","factor","colorCode","rgb","round","stringToNumber","containerSize","setElementAttributes","isMinus","seriesClipRect","labelSize","isRotatedLabelIntersect","renderOptions","labelRotation","baseLine","transX","transY","fontSize","textAnchor","CanvasRenderer","createSvg","canvasRender","enableCanvas","containerWidth","containerHeight","clientHeight","stockChart","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","calculateSize","chartObject","selectorObject","createCanvas","getTitle","title","titleCollection","textOverflow","textWrap","titlePositionX","titleStyle","textAlignment","currentLabel","maximumWidth","getUnicodeText","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","regSub","blazorTemplatesReset","annotations","StackValues","startValues","RectOption","border","rx","ry","dashArray","ImageOption","preserveAspectRatio","CircleOption","cx","cy","Thickness","PointData","lierIndex","getColorByValue","colorMap","colors","midColor","previousColor","nextColor","previousOffset","nextOffset","percent","full","splitColorValueOffset","splitColor","previous","prevColor","getPercentage","getPercentageColor","getGradientColor","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","fn","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","topLeft","CLS_RTE","CLS_RTL","CLS_DISABLED","CLS_SCRIPT_SHEET","CLS_STYLE_SHEET","CLS_TOOLBAR","CLS_TB_FIXED","CLS_TB_FLOAT","CLS_TB_ABS_FLOAT","CLS_INLINE","CLS_RTE_EXPAND_TB","CLS_FULL_SCREEN","CLS_QUICK_TB","CLS_POP","CLS_TB_STATIC","CLS_QUICK_POP","CLS_QUICK_DROPDOWN","CLS_IMAGE_POP","CLS_INLINE_POP","CLS_INLINE_DROPDOWN","CLS_DROPDOWN_POPUP","CLS_DROPDOWN_ICONS","CLS_DROPDOWN_ITEMS","CLS_DROPDOWN_BTN","CLS_RTE_CONTENT","CLS_TB_ITEM","CLS_TB_WRAP","CLS_SHOW","CLS_HIDE","CLS_VISIBLE","CLS_FOCUS","CLS_RM_WHITE_SPACE","CLS_IMGRIGHT","CLS_IMGLEFT","CLS_IMGCENTER","CLS_IMGBREAK","CLS_CAPTION","CLS_RTE_CAPTION","CLS_CAPINLINE","CLS_IMGINLINE","CLS_ICONS","CLS_ACTIVE","CLS_EXPAND_OPEN","CLS_RTE_ELEMENTS","CLS_TB_BTN","CLS_HR_SEPARATOR","CLS_TB_IOS_FIX","CLS_LIST_PRIMARY_CONTENT","CLS_NUMBERFORMATLIST_TB_BTN","CLS_BULLETFORMATLIST_TB_BTN","CLS_FORMATS_TB_BTN","CLS_FONT_NAME_TB_BTN","CLS_FONT_SIZE_TB_BTN","CLS_FONT_COLOR_TARGET","CLS_BACKGROUND_COLOR_TARGET","CLS_COLOR_CONTENT","CLS_FONT_COLOR_DROPDOWN","CLS_BACKGROUND_COLOR_DROPDOWN","CLS_COLOR_PALETTE","CLS_FONT_COLOR_PICKER","CLS_BACKGROUND_COLOR_PICKER","CLS_RTE_READONLY","CLS_RTE_HIDDEN","CLS_RTE_RES_HANDLE","CLS_RTE_IMAGE","CLS_RESIZE","CLS_IMG_FOCUS","CLS_RTE_DRAG_IMAGE","CLS_RTE_UPLOAD_POPUP","CLS_POPUP_OPEN","CLS_IMG_RESIZE","CLS_DROPAREA","CLS_IMG_INNER","CLS_UPLOAD_FILES","CLS_RTE_DIALOG_UPLOAD","CLS_CUSTOM_TILE","CLS_NOCOLOR_ITEM","CLS_TABLE","CLS_RTE_FIXED_TB_EXPAND","CLS_RTE_TB_ENABLED","updatePath","newText","isNOU","hasId","pathId","getParents","ids","getPathId","pathNames","getPathNames","isId","CLS","parentText","textContent","generatePath","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","activeElement","isSearchCut","activeElements","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","activeRecords","breadcrumbbarModule","searchObj","isFiltered","selectedItems","hover","searchWordHandler","isLayoutChange","searchWord","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","targetModule","hasReadAccess","createDeniedDialog","openAction","copyFiles","fileAction","cutFiles","fileType","file","filetype","getImageUrl","imgUrl","baseUrl","ajaxSettings","fileName","fPath","imgId","fileDetails","imageUrl","getFullPath","filePath","getName","getSortedData","sortOrder","sortBy","group","lists","currFiles","feFiles","createEmptyElement","layoutElement","addressBarHeight","emptyDiv","emptyFolder","emptyEle","dragFile","getLocaleText","eDiv","getDirectories","files","setNodeId","rootId","dirs","setDateObject","localeObj","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","setNextPath","currfolders","folders","originalPath","root","openSearchFolder","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","dragPath","subFolder","srcData","dragNodes","fileExists","createDialog","tempTarget","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","duplicateItems","pasteNodes","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","readDropPath","dropData","expandedId","navigationpaneModule","treeObj","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","badge","virtualDragElement","dragStopHandler","dragArgs","treeExpandTimer","removeDropTarget","uploadObj","dropArea","dragCount","dropHandler","dragStartHandler","dragObj","allowDragAndDrop","dragCancel","removeItemClass","draggingHandler","objectToString","updateRenamingData","currentItemText","filterPath","doRename","hasEditAccess","doDownload","hasDownloadAccess","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","response","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","uploadItem","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","_toConsumableArray","arrayLikeToArray","iter","from","rootID","svgLink","getOptionValue","svgObj","setSVGSize","drawLine","line","drawRectangle","rectangle","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","drawImage","img","setAttributeNS","tSpan","createTitle","createClipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colorName","colorStop","newOptions","fx","fy","drawGradient","createLinearGradient","x1","y1","x2","y2","gradientType","defs","gradient","stop_1","drawClipPath","drawCircularClipPath","canvasObj","ctx","getContext","setCanvasSize","setAttributes","lineWidth","dashArrayString","setLineDash","strokeStyle","save","beginPath","moveTo","lineTo","restore","canvasTranslate","canvasCtx","cornerRadius","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","closePath","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","counterClockWise","isTSpan","textAlign","baseline","textBaseline","txtlngth","rotate","fillText","circumference","scaleX","scaleY","scale","imageObj","Image","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","dataUrl","img_1","clearRect","canvasClip","clip","canvasRestore","breakText","textArray","whiteSpace","lineHeight","rX","rY","arrowPadding","tipX","tipY","tipRadius","Side","isRight","isBottom","CustomizeOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","Tooltip","initPrivateVariable","removeSVG","createTooltipElement","theme","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","getTooltipThemeColor","formattedText","isFirst","markerPoint","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","areaBounds","renderText","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","shared","groupElement","pathElement","shapes","markerGroup","marginX","palette","tooltipDiv","tipLocation","isTop","isLeft","elementSize","marginY","sharedTooltipLocation","tooltipLocation","inverted","clipBounds","headerSize","isWrap","wrappedText","textStyle","pathElement_1","pointRect","enableAnimation","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","defElement","changeText","findFormattedText","isRender","lines","tspanOption","subWidth","tspanStyle","leftSpace","rightSpace","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","labelColor","withoutHeader","isHeader","pointsLength","isTextWrap","len_1","getTooltipTextContent","width_1","tooltipText","characterCollection","isRtlText","isValidHTMLElement","firstElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","currenDiff","fadeOut","tooltipElement","tooltipGroup_1","firstChild","opacity_1","progressAnimation","endAnimation","tooltipGroup","consts","endsWith","startsWith","fnSort","order","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","level","groupDs","isLazyLoad","jsonData","indx","grouped","groupedArray","_loop_2","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","fKey","lookup","pKey","grp","fKeyData","getFieldList","copyObj","ds","comparer","middle","ignoreDiacritics","diacritics","fieldName","current","callAdaptorFunction","fnName","param1","param2","getAddParams","adp","req","reqParams","isPlainObject","isCors","xhr","getGuid","rand","Uint8Array","isNull","getItemFromComparer","castRequired","distinct","requiresCompleteRecord","tmp","processData","prepareQuery","sampledata","requiresCounts","requiresCount","returnValue","parseJson","condition","ignoreAccent","predicateList","getPredicate","predicates","aggregate","sorted","skip","take","mainPred","childPred","cpre","serverTimezoneOffset","timeZoneHandling","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","fnOperators","equal","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","processOperator","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","keys_2","ms","offSet","dateParse","toTimeZone","isUTC","utcFormat","hrs","mins","addSelfOffset","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","toJSON","jsonDateReplacer","toUTC","utc","unix","toLocalTime","datefn","differenceString","localtimefn","norm","Operators","forTest","endObj","slash","newLine","stream","endStream","xref","trailer","startxref","eof","beginText","endText","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","LogLevel","_defineProperty","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","FieldSettings","dropDownBaseClasses","rtl","selected","noData","fixedHead","li","disabled","grouping","DropDownBase","preventChange","isAngular","isPreventChange","isDynamicDataChange","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","typeof","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","textItem","typedText","getFormattedValue","baseTemplate","checkTemplate","exception","l10nUpdate","ulElement","noRecordsTemplate","actionFailureTemplate","DropDownBaseresetBlazorTemplates","actionFailureTemplateId","noRecordsTemplateId","noDataCompTemp","DropDownBaseupdateBlazorTemplates","componentLocale","getLocaleName","l10n","liElem","getTextByValue","setEnableRtl","enableRtlElements","bindEvent","jsonElement","ListBase","createJsonFromElement","resetList","setListData","renderItemsBySelect","renderSelectElement","selectElement","isDataSource","noRecord","footer","itemTemplate","itemTemplateId","groupTemplate","groupTemplateId","valueTemplateId","headerTemplateId","footerTemplateId","setEnabled","enabled","updateDataAttribute","invalidAttr","htmlAttributes","getJSONfromOption","optionGroup","updateFields","groupBy","iconCss","innerText","scrollTimer","isRequested","isDataFetched","isActive","showSpinner","emptyDataRequest","executeQuery","getQuery","listItems","renderItems","onActionComplete","renderGroupTemplate","bindChildItems","onActionFailure","hideSpinner","dataManager","localDataArgs","childNode","remainingItems","sortedData","liCollections","updateListValues","raiseDataBound","findListElement","findNode","liElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupTemplateID","headerItems","groupValue","createListItems","getSortedDataSource","groupDataSource","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","setFixedHeader","scrollStop","liHeight","getValidLi","topIndex","currentLi","isTempEmpty","templateID","renderContentTemplate","liWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getItems","dispatchEvent","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","setZIndex","isEmptyData","rippleFun","isGroupChecking","addItem","itemIndex","itemsCount","selectedItemValue","itemText","addItemTemplate","compiledString","createTextNode","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","updateDataList","validationAttribute","hidden","itemCount","getDataByValue","undoRedoItems","inlineNode","getIndex","toLocaleLowerCase","hasClass","getDropDownValue","returnType","subCommand","isIDevice","isIos","getFormattedFontSize","isIFrame","getTooltipText","i10n","itemLocale","toolsLocale","setToolbarStatus","isPopToolbar","updateDropDownFontFormatLocale","dropDown","dropDownModule","tbItems","itemStr","tbElements","toolbarSettings","formatDropDown","formatItems","types","formatContent","default","alignDropDown","fontNameDropDown","fontNameItems","fontNameContent","name_1","fontSizeDropDown","fontSizeItems","fontSizeContent","getCollection","getTBarItemsIndex","toolbarItems","itemsIndex","command","updateUndoRedoStatus","baseToolbar","undoRedoStatus","trgItems","toolbarObj","enableItems","parseHtml","tempNode","DocumentFragment","createRange","createContextualFragment","getTextNodesUnder","docElement","nextSibling","toObjectLowerCase","convertedValue","getEditValue","rteObj","enableHtmlEncode","updateTextNode","decode","resultElm","isPreviousInlineElem","previousParent","paraElm","nodeName","imageElm","isEditableValueEmpty","sanitizeHelper","enableHtmlSanitizer","convertToBlob","mime","bstr","atob","u8arr","Blob","getLocaleFontFormat","localeItems","fontNameLocale","formatsLocale","numberFormatListLocale","bulletFormatListLocale","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","subQuery","isChild","distincts","queries","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","setKey","using","execute","always","subQuerySelector","isCountRequired","addParams","expand","tables","searchKey","fieldNames","isFromGroup","sortByForeignKey","sorts","filterQueries","sortByDesc","page","pageIndex","nos","hierarchy","selectorFn","foreignKey","filterQueryLists","singles","filtered","isComplex","combinePredicates","combine","fromJson","fromJSONData","validate","record","isAnd","toJson","preds","requests","offline","insertUrl","removeUrl","updateUrl","crudUrl","batchUrl","timeTillExpiration","cachingPageSize","enableCaching","requestType","crossDomain","jsonp","RemoteSaveAdaptor","CustomDataAdaptor","requiresFormat","defaultQuery","isDataAvailable","ODataAdaptor","JsonAdaptor","CacheAdaptor","setDefaultQuery","processResponse","isCustomDataAdaptor","makeRequest","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","cache","isSelector","request","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","ajaxReqOption","virtualRecords","getData","ajax_1","pResult","cResult","settings","original","batchRequest","doAjaxRequest","batchUpdate","deff_1","ajax_2","insert","addRecord","deleteRecord","update","updateRecord","successFunc","failureFunc","ajaxDeffered","ajaxFunc","ajax_3","Input","CLASSNAMES","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","inputElement","inputValue","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","internalCreateElement","makeElement","container","createInputContainer","customTag","floatLinelement","floatLabelElement","placeholder","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","button","wireClearBtnEvents","readOnly","validateLabel","tagClass","tag","spanEle","setCssClass","oldClass","setPlaceholder","setReadonly","isReadonly","readonly","isRtl","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","_internalRipple","argsButton","buttons","_onMouseDownRipple","_onMouseUpRipple","parentEle","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","containerElement","createInput","bindClearAction","showClearButton","setPropertyValue","setWidth","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","wrapper","setRipple","addIcon","icons","internalCreate","result_1","result_2","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","defaulthtmlkeys","delayUpdate","ComponentBase","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","componentDidMount","refreshChild","canDelayUpdate","renderReactComponent","portals","componentDidUpdate","prev","refreshProperties","reactElement","shouldComponentUpdate","nextProps","updateProperties","dProps","propkey","isClassName","htmlattributes","compareValues","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","ref","reactUid","onChange","syntheticEvent","nativeEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","diffArray","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","propInstance_1","componentWillUnmount","forceUpdate","templateNames","tempPortal","indexCount","propIndexCount","portal","childCache","childs_1","React","toArray","ifield","getChildType","childProps","getChildProps","isDirective","subChild","matcher","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","applyMixins","derivedClass","baseClass","ComplexBase","stringCompiler","cEle","actTemplate","actData","isLegacyTemplate","ReactDOM","rele","BrowserRouter","createHistory","HashRouter","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","forwardRef","LinkAnchor","innerRef","navigate","onClick","ex","isModifiedEvent","forwardedRef","Link","RouterContext","method","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","exact","isActiveProp","locationProp","strict","toLocation","escapedPath","matchPath","classnames","joinClassnames","createContext","createNamedContext","Router","computeRootMatch","isExact","pathname","_pendingLocation","unlisten","staticContext","MemoryRouter","Lifecycle","onMount","onUpdate","prevProps","onUnmount","Prompt","when","cacheCount","generator","pathToRegexp","compilePath","pretty","Redirect","computedMatch","prevLocation","locationsAreEqual","sensitive","cacheKey","pathCache","memo","Route","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","methodName","invariant","StaticRouter","handlePush","handleReplace","handleListen","handleBlock","navigateTo","addBasename","createHref","go","goBack","goForward","listen","block","Switch","withRouter","displayName","wrappedComponentRef","remainingProps","hoistStatics","useContext","useHistory","useLocation","useParams","useRouteMatch","PdfNumber","position5","status5","isSaving5","index5","writer","intValue","crossTable","floatToString","number","returnString","__assign","ToolbarType","DialogType","legendClick","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelClick","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","pointClick","pointDoubleClick","pointMove","chartMouseLeave","chartMouseDown","chartMouseUp","resized","beforeResize","regSup","afterExport","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","escapeString","newName","stringValue","ch","delimiters","replacements","ul","icon","check","expanded","hasChild","collapsible","image","iconWrapper","anchorWrap","navigable","getFieldValues","fieldData","dataField","defaultMappedFields","isChecked","hasChildren","urlAttributes","imageAttributes","defaultAriaAttributes","listRole","itemRole","wrapperRole","defaultListBaseOptions","showCheckBox","expandCollapse","listClass","itemClass","processSubChild","headerTemplate","expandIconClass","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","curOpt","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","checkboxElement","anchorElement","typeofData","curItem","innerEle","imageElemnt","iconElement","createListFromJson","elementArray","elementAttributes","class","getAllAttributes","nodeValue","subDS","subLi","innerElements","grpLI","elementID","role","anchorTag","isFullNavigation","anchorWrapper","uID","compiledElement","innerDiv","getSiblingLI","isPrevious","siblingLI","liIndex","curFields","cusQuery","itemObj","grpItem","newtext","_id","curEle","jsonAr","childs","hasChildNodes","attributes_1","liCollection","currentID","headerItems_1","headerData","generateIcon","isRequired","isNotEmpty","isIn","isBrowser","isWebWorker","includeContent","detail","isArrayBuffer","byteLength","formatArrayBuffer","ArrayBuffer","transportName","httpClient","accessTokenFactory","logMessageContent","withCredentials","defaultHeaders","token","getUserAgentHeader","Trace","getDataDetail","responseType","post","statusCode","ConsoleLogger","Information","subject","dispose","cancelCallback","_","minimumLogLevel","outputConsole","logLevel","Critical","toISOString","Warning","userAgentHeaderName","Platform","isNode","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","os","runtime","runtimeVersion","majorAndMinor","platform","versions","KEY_DOWN","ACTION","FORMAT_TYPE","KEY_DOWN_HANDLER","LIST_TYPE","KEY_UP_HANDLER","KEY_UP","MODEL_CHANGED_PLUGIN","MODEL_CHANGED","MS_WORD_CLEANUP_PLUGIN","MS_WORD_CLEANUP","ON_BEGIN","SPACE_ACTION","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","filterSuccess","rename","itemNewName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","beforeSendArgs","triggerAjaxFailure","rootAliasName","rootName","location_1","nextElementSibling","hide","createdItem","renamedItem","fileLength","createExtDialog","searchString","searchSuccess","downloadUrl","downloadArgs","form","forms","namedItem","submit","PdfDictionary","dictionary","position7","primitiveItems","Dictionary","archive","isFont","encrypt","dictionaryProperties","DictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","containsKey","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","Count","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","Font","Border","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","Index","seriesIndex","EmptyPointSettings","DragSettings","TooltipSettings","Theme","tooltipLabelFont","Periods","PeriodSelectorSettings","templateItems","tools","alignmentLocale","alignmentItems","imageAlignItems","displayLocale","imageDisplayItems","tableCellItems","tableRowLocale","tableRowsItems","tableColumnLocale","tableColumnsItems","tableVerticalLocale","TableCellVerticalAlignItems","tableStyleLocale","TableStyleItems","predefinedItems","fontColor","backgroundColor","numberFormatList","bulletFormatList","getLocale","updateDropDownLocale","_isTypeof","theType","_isUndefined","_isNullOrUndefined","_hasOwnProperty","_isObject","_isFunction","_attachEvent","eventNameWithoutOn","handlerRef","useCapture","_detachEvent","isDate","isString","isBoolean","disableCookies","CoreUtils","_canUseCookies","newGuid","GuidRegex","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","arrForEach","callbackfn","thisArg","arrIndexOf","searchElement","fromIndex","lp","arrMap","arrReduce","initialValue","objCreate","tmpFunc","objKeys","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","objDefineAccessors","getProp","setProp","defineProp","addEventHandler","w","doc","EventHelper","Attach","isTypeof","isFunction","AttachEvent","Detach","DetachEvent","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","PdfReferenceHolder","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","pdfReference","PdfArray","PdfStream","PdfString","cTable","isSaving","getReference","pages","kids","mediaBox","decodeParms","type1","baseFont","encoding","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","link","annot","uri","annots","ca","CA","xyz","fit","dest","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","fontName","flags","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","background","shading","matrix","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","setEditFrameFocus","editableElement","iframe","contentWindow","tableElm","tdElm","borderLeft","removeProperty","borderRight","borderBottom","borderTop","getLastTextNode","startChildNodes","finalNode","getDefaultHtmlTbStatus","bold","italic","subscript","superscript","strikethrough","orderedlist","unorderedlist","underline","alignments","backgroundcolor","fontcolor","fontname","fontsize","formats","createlink","insertcode","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","pdfCrossTable","markedChange","fromRectangle","tempElements","markChanged","removeAt","clear","globalCssModule","mapToCssModules","cssModule","Element","PropTypes","oneOfType","func","componentName","any","tagPropType","$$typeof","arrayOf","TransitionTimeouts","Fade","Collapse","Modal","Carousel","TransitionStatuses","ENTERING","ENTERED","EXITING","EXITED","isObjectType","isHTMLElement","ELEMENT_NODE","VALIDATION_MODE","EVENTS","INPUT_VALIDATION_RULES","REGEX_IS_DEEP_PROP","REGEX_IS_PLAIN_PROP","REGEX_PROP_NAME","REGEX_ESCAPE_CHAR","attachEventListeners","handleChange","isRadioOrCheckbox","isKey","stringToPath","quote","tempPath","transformToNestObject","entries","Boolean","focusOnErrorField","fieldErrors","removeAllEventListeners","validateWithStateUpdate","isRadioInput","isCheckBoxInput","isDetached","HTMLElement","DOCUMENT_NODE","isEmptyObject","castPath","baseGet","baseSlice","unset","paths","childObject","previousObjRef","objectRef","currentPaths","currentPathsLength","baseUnset","isSameRef","fieldValue","findRemovedFieldAndRemoveListener","forceDelete","mutationWatcher","disconnect","defaultReturn","isValid","getRadioValue","isFileInput","isMultipleSelect","isEmptyString","defaultResult","validResult","getCheckboxValue","getFieldValue","getFieldsValues","isSameError","objectA","objectB","objectAKeys","objectBKeys","every","compareObject","shouldRenderBasedOnError","validFields","fieldsWithValidation","isFieldValid","isFormValid","currentFieldError","existFieldError","has","isManual","isRegex","getValueAndMessage","validationData","isMessage","isValidElement","getValidateError","appendErrors","validateAllFieldCriteria","validateField","fieldsRef","required","maxLength","minLength","isRadio","isCheckBox","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","requiredValue","requiredMessage","maxValue","maxMessage","minValue","minMessage","valueNumber","valueAsNumber","exceedMin","valueDate","valueAsDate","maxLengthValue","minLengthValue","inputLength","patternValue","patternMessage","validateRef","validateError","validationResult","validateFunction","validateResult","parseErrorSchema","inner","validateWithSchema","validationSchema","validationResolver","abortEarly","isPrimitive","getPath$1","parentPath","getInnerPath","pathWithIndex","flat","assignWatchFields","watchFields","isSingleField","skipValidation","isOnChange","hasError","isBlurEvent","isOnSubmit","isReValidateOnSubmit","isOnBlur","isReValidateOnBlur","isSubmitted","getFieldArrayParentName","getFieldValueByName","getIsFieldsDifferent","referenceArray","differenceArray","isMatch","dataA","dataB","isMatchFieldArrayName","searchName","isNameInFieldArray","isSelectInput","onDomRemove","onDetachCallback","MutationObserver","observe","childList","subtree","modeChecker","isRadioOrCheckboxFunction","useForm","reValidateMode","validationContext","defaultValues","submitFocusError","validateCriteriaMode","useRef","errorsRef","touchedFieldsRef","fieldArrayDefaultValues","watchFieldsRef","Set","dirtyFieldsRef","fieldsWithValidationRef","validFieldsRef","isValidRef","defaultValuesRef","defaultValuesAtRenderRef","isUnMount","isWatchAllRef","isSubmittedRef","isDirtyRef","submitCountRef","isSubmittingRef","handleChangeRef","resetFieldArrayFunctionRef","validationContextRef","fieldArrayNamesRef","useState","isWindowUndefined","shouldValidateSchemaOrResolver","isWeb","isProxyEnabled","Proxy","readFormStateRef","dirty","dirtyFields","submitCount","touched","isSubmitting","reRender","useCallback","shouldRenderBaseOnError","shouldRender","shouldReRender","previousError","delete","setFieldValue","rawValue","radioRef","selectRef","checkboxRef","setDirty","isFieldDirty","isFieldArray","previousDirtyFieldsLength","fieldArrayName","isDirtyChanged","setInternalValues","parentFieldName","isValueArray","setInternalValue","executeValidation","skipReRender","executeSchemaOrResolverValidation","payload","previousFormIsValid","triggerValidation","isFieldWatched","valueOrShouldValidate","shouldValidate","isArrayValue","isStringFieldName","currentError","shouldSkipValidation","shouldUpdateDirty","validateSchemaOrResolver","removeFieldEventListener","removeFieldEventListenerAndRef","clearError","setInternalError","setError","watch","isDefaultValueUndefined","combinedDefaultValues","unregister","registerFieldsRef","validateOptions","fieldRefAndValidationOptions","isEmptyDefaultValue","register","refOrValidationOptions","validationOptions","handleSubmit","persist","fieldError","resetRefs","omitResetState","inputRef","resetFieldArray","getValues","outputValues","useEffect","formState","commonProps","validateSchemaIsValid","_extends","defaultToString","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","CellRenderer","locator","localizer","formatter","tabindex","rowChkBox","getGui","toView","getFormatter","cell","fData","isEdit","isReactCompiler","literals_1","dummyData","getColumnTemplate","invokeFormatter","refreshCell","refreshTD","cellIndex","parentRow","newTD","cloneAttributes","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","getDomSetter","selectionSettings","persistSelection","checkWrap","createCheckBox","checkAllRows","isSelected","buildAttributeFromCell","rowRenderingMode","clipMode","isCheckBoxType","colSpan","rowSpan","isColumnSelected","cellType","Header","colIndex","replaceItems","formattedString","strArr","dialogName","triggerPopupOpen","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","onFolderDialogOpen","onDeleteSubmit","onReSubmit","onRenameDialogOpen","modified","toLocaleUpperCase","getOptions","Dialog","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","show","changeOptions","extOptions","duplicateContent","extDialogObj","renameText","item_1","indexval","item_2","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","isApplySame","getExtOptions","beforeExtOpen","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","dialogEle","checkContainer","checkbox","CheckBox","oninput","onValidate","onkeyup","setSelectionRange","focusInput","txt","showFileExtension","onFocusRenameInput","preventKeydown","dlgName","btnElement","btnCount","onkeydown","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","addInvalid","charCode","createImageDialog","alt","viewerObj","enableResize","X","Y","openImage","resizing","updateImage","imgWrap","cssObj","paddingWidth","paddingRight","paddingHeight","paddingBottom","dicPrefix","dicSuffix","clonedObject2","bCompress","isImageStream","isFontStream","dataStream2","bCompress2","clearStream","internalStream","writeBytes","fromCharCode","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","CompressedStreamWriter","getCompressedString","addFilter","filterName","isImage","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","InternalEnum","SourceType","ForceEncoding","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","bytes","encode","Ascii","pdfEncode","stringMark","escapeSymbols","currentData","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","dropDownListClasses","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","isListSearched","checkBlazor","isServerBlazor","valueTempElement","initializeData","activeIndex","queryString","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","previousValue","keyConfigure","tab","enter","home","down","up","pageUp","pageDown","space","popupObj","interopAdaptor","invokeMethodAsync","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","resetSelection","getItemData","onChangeEvent","allowFiltering","selectedLI","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlurHandler","relatedTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","onFocus","resetValueHandler","formElement","wireEvent","dropDownClick","focusIn","onSearch","bindCommonEvent","keyboardModule","mobileKeyActionHandler","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","isServerIncrementalSearch","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","isValidLI","back","closePopup","setHover","hoveredItem","setScrollPosition","spinnerElement","filterInputObj","createSpinner","preventAction","preventHomeEnd","isNavAction","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isServerNavigation","focusEle","isSelectFocusItem","nextItem","findLi","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","templateData","valueCompTemp","dataValue","dataText","eve","detachChangeEvent","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterQuery","selectionStart","selectionEnd","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","renderPopup","checkField_1","updateActionCompleteDataValues","addNewItem","newElement","value_1","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","serverPopupEle","searchBox","listHeight","popupHeight","setHeaderTemplate","footerTemplate","setFooterTemplate","updateServerPopup","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","checkCollision","collision","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","listScroll","inputParent","destroyPopup","serverBlazorUpdateSelection","bindServerScrollEvent","resolveCollision","popupStyles","borderTopWidth","borderBottomWidth","setPopupPosition","Popup","targetType","relateTo","isResetItem","actionList","targetExitViewport","popupOffset","lastItem","popupWidth","scrollBottom","isInitial","currentOffset","nextBottom","paddingTop","boxRange","isPopupButton","blur","setEleWidth","scrollableParentElements_1","animModel","fixedHeader","popupHolderEle","updatedCssClassValues","selectedIndex","onselect","stopImmediatePropagation","onchange","footerCompTemp","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","ddlProps","newClass","invokeRenderPopup","isDropdownComp","proxy_2","onpopstate","pushState","clientRenderPopup","renderHightSearch","updateclientItemData","initValueItemData","serverUpdateListElement","isFooter","isSelectVal","isFocused","resetIncrementalSearchValues","attrArray","hasOwn","argType","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","ReferenceError","PdfFontMetrics","lineGap","getAscent","PdfFont","charSizeMultiplier","getSize","getDescent","getLineGap","getHeight","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","subScriptSizeFactor","SuperScript","superscriptSizeFactor","widthTable","WidthTable","internalWidthTable","StandardWidthTable","widths","_objectWithoutPropertiesLoose","excluded","sourceKeys","globalTimeOut","spinTemplate","spinCSSClass","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","svg","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","svgBoot","bootCircle","CLS_SPINCIRCLE","defaultRadius","create_bootstrap_element","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createTailwindSpinner","generateSeries","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","startTime","strokeSize","getStrokeSize","mat_animation","getDashOffset","createCircle","easeAnimation","transformOrigin","drawArc","timestamp","timecount","innerConainer","trgClass","defineCircle","endArc","defineArc","radians","showHideSpinner","isHide","spinnerWrap","svgEle","globalObject","globalVariables","timeOutVar","startMatAnimate","rotation","boot_animate","animateBootstrap","setSpinner","ensureTemplate","makeEle","svgElement","replaceTheme","PdfLayoutType","PdfLayoutBreakType","PathPointType","elementRect","popupRect","parentDocument","fixedParent","fixedElement","anchorPos","tempAnchor","calculatePosition","currentElement","positionX","positionY","targetValues","ownerDocument","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","disableHtmlEncode","allowSorting","allowResizing","allowGrouping","showColumnMenu","enableGroupByFormat","showInColumnChooser","edit","allowSearching","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","ValueFormatter","commands","commandsTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","sortComparer","a_1","xObj","yObj","getSortDirection","setSortDirection","freezeTable","refreshReactColumnTemplateByUid","formatFn","getParser","parserFn","getHeaderTemplate","getFilterItemTemplate","CommandColumnModel","Row","setRowValue","setRowData","setCellValue","pKeyField","makechanges","getDataModule","PdfBrush","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","cells_1","rowArgs","cellArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isCheckBoxSelection","buildAttributeFromRow","cellRendererFact","cellRenderer","getCellRenderer","Data","DetailExpand","isPrinting","Filter","CommandColumn","requestTypeAction","isRowSpanned","prevRowCells","prevRowCell","rowSpanRange","cellSpan","CellMergeRender","isSpanned","detailTemplate","lazyLoadCssClass","frozenColumns","summarycell","lastSummaryCell","firstSummaryCell","LineType","PdfStringLayouter","isOverloadWithPosition","layout","arg5","arg6","arg7","clientSize","doLayout","rectSize","pageHeight","reader","StringTokenizer","PdfStringLayoutResult","lineResult","peekLine","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","success","numInserted","readLine","finalizeResult","firstLine","firstLineIndent","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","readWord","addToLineResult","NewLineBreak","builder","curLine","curIndent","word","peekWord","curLineWidth","getWrapType","None","WordOnly","textRemainder","peek","wordWrap","Character","Word","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","readToEnd","spaces","empty","_inheritsLoose","Regular","metrics","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","PdfStringFormat","temparg2","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","wordSpacing","getCharsCount","syncObject","textValue","currentPosition","numSymbols","text2","whiteSpacePattern","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","rippleSpan","frameSpan","labelSpan","rippleMouseHandler","setHiddenInput","proxy","strUndefined","strObject","strPrototype","strFunction","globalThis","global","gbl","getGlobal","hasWindow","getGlobalInst","hasDocument","hasJSON","Cell","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","getIndentCount","generateRows","buildSummaryData","getGeneratedRow","parentUid","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","Indent","DetailFooterIntent","isDataCell","sColumn","scolumn","columnName","opt","dummy","summaryRows","single","setTemplate","disp","Summary","GroupSummaryModelGenerator","GroupSummary","CaptionSummaryModelGenerator","CaptionSummary","getSeriesColor","getThemeColor","darkBackground","axisLabel","axisTitle","axisLine","majorGridLine","minorGridLine","majorTickLine","minorTickLine","chartTitle","legendLabel","areaBorder","errorBar","crosshairLine","markerShadow","selectionRectFill","selectionRectStroke","selectionCircleStroke","axisLabelFont","axisTitleFont","chartTitleFont","chartSubTitleFont","crosshairLabelFont","legendLabelFont","legendTitleFont","stripLineLabelFont","stockEventFont","PdfPageLayer","streamClipPageTemplates","pdfColorSpace","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","pdfGraphics","initializeGraphics","layer","PdfPageLayerCollection","sign","oPage","gr","GetResourceEventHandler","PdfGraphics","mediaBoxUpperRightBound","sc","section","isSame","origin","initializeCoordinates","getActualBounds","margins","clipTranslateMargins","graphics","setLayer","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","getResources","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","layerCollection","PdfResources","setResources","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","annotation","doAdd","setPage","layoutResult","stringFormat","lastPosition","drawString","brush","setColor","cs","colours","PdfPage","annotationCollection","defaultLayer","setSection","resetProgress","isProgressOn","getClientSize","drawPageTemplates","containsTemplates","backLayer","drawTemplates","automaticFields","fieldInfo","performDraw","scalingX","scalingY","frontLayer","fromView","RowModelGenerator","enableInfiniteScrolling","getInfiniteIndex","generateRow","ensureColumns","cols","generateCell","RowDragIcon","pid","tIndex","parentGid","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","rowId","refreshRows","scalingFactor","wordWrapType","internalLineLimit","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","trailingSpaces","isNoClip","initialLineIndent","PdfSolidBrush","pdfColor","monitorChanges","streamWriter","currentColorSpace","setColorAndSpace","resetChanges","prevString","prevElementId","elementId","strLength","inputVal","searchType","queryStr","itemsData","isAbsolute","spliceOne","resolvePathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","valueOf","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","parsePath","hashIndex","searchIndex","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","revertPop","initialLocation","listenerCount","checkDOMListeners","isBlocked","prevIndex","nextKeys","replaceState","unblock","HashPathCoders","hashbang","encodePath","decodePath","noslash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entry","nextIndex","nextEntries","canGo","Adaptor","pvt","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","aggQuery","deletedRecordsLen","onAggregates","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","hierarchyFilters","getQueryRequest","groups","filters","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","formRemoteGroupedData","getAggregateResult","childLevel","getGroupedRecords","hasRecords","childGroupedRecords","changed","added","deleted","keyColumn","predicats","aggregateData","isServerGrouping","groupQuery","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","guid","getField","encodeURIComponent","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","reverse","onCount","overrideMimeType","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","ODataV4Adaptor","onExpand","exArr","onDistinct","distinctFields","WebApiAdaptor","host","Items","WebMethodAdaptor","param","updateKey","GraphQLAdaptor","schema","getVariables","datamanager","urlQuery","vars","variables","resData","inserted","generateCrudData","bData","crudData","parsed","getMutation","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","CheckBoxFilterBase","existingPredicate","foreignKeyQuery","filterState","renderEmpty","cBoxTrue","cBoxFalse","closeDialog","clickHandler","keyupHandler","searchHandler","searchBoxKeyUp","unWireEvents","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","fpred","foreignFilter","isRemote","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","getAndSetChkElem","sBox","hideSearchbox","inputargs","spinner","cBox","showDialog","columnType","btnClick","dialogCreated","renderResponsiveFilter","isResponsiveFilter","getAllData","openDialog","isBlanks","filterTemplateCol","registeredTemplate","filterItemTemplate","isVue","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","defaults","isNotEqual","itemsCnt","generateNullValuePredicates","initiateFilter","firstVal","foreignQuery","predicte","addDistinct","filterModel","filterChoiceCount","filterargs","filterObj","emptyValPredicte","generatePredicate","filterEvent","processSearch","getPredicateFromCols","isGrid","foreignColumn","processDataOperation","filteredColumn","defObj","dataSuccess","allPromise","runArray","colData","fullData","args1","sSettings","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes_1","createCheckbox","btn","btnObj","indeterminate","cBoxes","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","args_1","getCheckedState","checkState","foreignDataObj","updateDateFilter","getCaseValue","upDownKeyHandler","defaultIdx","liIdx","selectedLi","setBlankIconStyle","blankIconList","iconLi","cssProp","Item","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","setLineJoin","lineJoin","setLineCap","lineCap","miterLimit","pen","getPattern","setLineDashPattern","dashOffset","dashPattern","PositionData","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","orientationOnChange","getRelateToElement","scrollRefresh","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","elementView","reposition","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","callFlip","flip","viewPortElement","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","PdfWriter","pdfDocument","buffer","overload","tempOverload","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","ObjectStatus","Registered","lookFor","wasNew","trySetReference","setReference","pdfObject","objectCollectionIndex","StreamWriter","bufferBlob","bufferText","Save","isMicrosoftBrowser","msSaveBlob","flush","enc","Encoding","setBomByte","includeBom","arrayUnicode","uint8","arrayUtf8","utf8","validateNullOrUndefined","bufferArray","getBytes","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","objects","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","blobData","docSave","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","Left","topTemplate","rightTemplate","Right","bottomTemplate","Bottom","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","getPages","pointToNativePdf","setPageSettings","PageSettingsState","pageCount","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","rh","onPageAdded","document_1","getActualSize","getLeftIndentWidth","top_1","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","draw","pageOrientation","pageRotate","pageOrigin","sections","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","isMerging","defaultMargin","isMerge","cacheCollection","PdfCrossTable","PdfCatalog","documentPageCollection","defaultStandardFont","PdfStandardFont","Helvetica","PdfPageSettings","isCacheEnabled","checkPagesPresence","currentSavingObj","pdfObjects","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","showNextLineText","setColorSpace","temparg1","op","opcode","updateY","writeComment","forStroking","patternOffset","setLineDashPatternHelper","tempPattern","lineCapStyle","lineJoinStyle","appendBezierSegment","setColourWithPattern","patternName","PdfTransformationMatrix","radDegFactor","transformationMatrix","Matrix","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","metrixElements","tempMatrix","ProcedureSets","pdf","imageB","imageC","imageI","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isItalic","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","requireProcedureSet","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","PdfAutomaticFieldInfo","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","PdfTilingBrush","xOffset","yOffset","PdfGradientBrush","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","physicalDimension","name_2","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","alignment","Center","lineAlignment","Middle","pageSave","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","setClip","tm","getTextRenderingMode","ws","textHeight","boundsHeight","vAlignShift","ttfFont","unicode","isUnicode","isEmbedFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","RtlRenderer","textDirection","blocks","rightAlign","words","RightToLeft","splitLayout","drawUnicodeBlocks","breakUnicodeLine","tokens","convertToUnicode","getUnicodeString","xShift","spaceWidth","getCharWidth","tokenWidth","converted","fontInternal","UnicodeTrueTypeFont","ttfReader","setSymbols","convertString","boundsWidth","hasWordSpacing","whitespacesCount","wordSpace","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","Normal","trasparencies","TemporaryDictionary","transp","TransparencyData","PdfTransparency","name_3","translateTransform","clipArea","scaleTransform","rotateTransform","getRotateTransform","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","buildUpPath","pathPoints","pathTypes","fillMode","constructArcPath","typeValue","pathTypesValuesMask","Start","Bezier3","p3","result1","getBezierPoints","Line","checkFlags","CloseSubpath","startAng","sweepAngle","getBezierArc","pt","numX1","numY1","numX2","numY2","s1","e1","fragAngle1","numFragments","xcen","ycen","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","DoubleRange","mStart","mEnd","ExportHelper","hideColumnInclude","parentDetails","enableLazyLoading","totalRecordsCount","getFData","getGridRowModel","processColumns","childGridLevel","columns_1","getColumnData","columnPromise","fColumns","getHeaders","isHideColumnInclude","colDepth","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","columns_2","getCellCount","appendGridCells","gridRows","StackedHeader","isIgnoreFirstCell","gridColumn","columnIndexes","getColumnIndexesInView","HeaderIndent","checkAndExport","gridPool","globalResolve","childGridObj","createChildGrid","exportType","Grid","detailRowModule","getGridModel","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","exportId","isExportGrid","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","cFormat","LoggingSeverity","_InternalMessageId","BrowserDoesNotSupportLocalStorage","BrowserCannotReadLocalStorage","BrowserCannotReadSessionStorage","BrowserCannotWriteLocalStorage","BrowserCannotWriteSessionStorage","BrowserFailedRemovalFromLocalStorage","BrowserFailedRemovalFromSessionStorage","CannotSendEmptyTelemetry","ClientPerformanceMathError","ErrorParsingAISessionCookie","ErrorPVCalc","ExceptionWhileLoggingError","FailedAddingTelemetryToBuffer","FailedMonitorAjaxAbort","FailedMonitorAjaxDur","FailedMonitorAjaxOpen","FailedMonitorAjaxRSC","FailedMonitorAjaxSend","FailedMonitorAjaxGetCorrelationHeader","FailedToAddHandlerForOnBeforeUnload","FailedToSendQueuedTelemetry","FailedToReportDataLoss","FlushFailed","MessageLimitPerPVExceeded","MissingRequiredFieldSpecification","NavigationTimingNotSupported","OnError","SessionRenewalDateIsZero","SenderNotInitialized","StartTrackEventFailed","StopTrackEventFailed","StartTrackFailed","StopTrackFailed","TelemetrySampledAndNotSent","TrackEventFailed","TrackExceptionFailed","TrackMetricFailed","TrackPVFailed","TrackPVFailedCalc","TrackTraceFailed","TransmissionFailed","FailedToSetStorageBuffer","FailedToRestoreStorageBuffer","InvalidBackendResponse","FailedToFixDepricatedValues","InvalidDurationValue","TelemetryEnvelopeInvalid","CreateEnvelopeError","CannotSerializeObject","CannotSerializeObjectNonSerializable","CircularReferenceDetected","ClearAuthContextFailed","ExceptionTruncated","IllegalCharsInName","ItemNotInArray","MaxAjaxPerPVExceeded","MessageTruncated","NameTooLong","SampleRateOutOfRange","SetAuthContextFailed","SetAuthContextFailedAccountName","StringValueTooLong","StartCalledMoreThanOnce","StopCalledWithoutStart","TelemetryInitializerFailed","TrackArgumentsNotSpecified","UrlTooLong","SessionStorageBufferFull","CannotAccessCookie","IdTooLong","InvalidEvent","FailedMonitorAjaxSetRequestHeader","SendBrowserInfoOnUserInit","PluginException","mKeys","mValues","RangeError","PdfTemplate","writeTransformation","tempSize","setSize","templateSize","addType","addSubType","plugin","defItemCtx","_self","_nextProxy","_hasProcessTelemetry","processTelemetry","_hasSetNext","setNextPlugin","_hasRun","getPlugin","getNext","setNext","nextPlugin","env","itemCtx","hasRun","diagLog","throwInternal","CRITICAL","identifier","_createProxyChain","plugins","proxies","lastProxy","thePlugin","newProxy","core","startAt","_copyProxyChain","srcPlugins","_copyPluginChain","DiagnosticLogger","getCfg","getExtCfg","theConfig","extConfig","extensionConfig","getConfig","theValue","hasNext","processNext","createNew","ProcessTelemetryContext","mStroking","mLocation","mDictionaryProperties","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","axes","nearSizes","farSizes","computeSize","internalVisibility","findTickSize","crossInAxis","findLabelSize","lineStyle","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","intervalDivs","isStack100","crossAt","updatedRect","multiLevelLabelHeight","isIntervalInDecimal","titleSize","crossAxis","tickPosition","isInside","majorTickLines","innerPadding","isHorizontal","labelPosition","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","calculateVisibleRangeOnZooming","baseRange","actualRange","doubleRange","calculateAxisRange","enableAutoIntervalOnBothAxis","zoomSettings","visiblePoints","axisCollections","yMin","yMax","baseModule","calculateRangeAndInterval","_f","_g","triggerRangeRender","getRangePadding","rangePadding","getMaxLabelWidth","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","originalText","breakLabelSize","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","height_1","isHorizontalAngle","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","isBreakLabels","width2","Double","StripLineSettings","MultiLevelLabels","LabelBorder","ScrollbarSettings","Location","LegendSettings","BaseLegend","pageXCollections","legendTitleCollections","legendRegions","pagingRegions","legend","legendSettings","legendID","isBulletChartControl","isStockChartControl","bulletChart","fivePixel","rowCount","pageButtonSize","maxColumns","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTitle","currentPageNumber","calculateLegendBounds","legendBounds","library","getLegendBounds","containerPadding","getLocation","accumulation","visibleSeries","setBounds","computedWidth","computedHeight","titleHeight","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","maxItemHeight","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","legendSize","renderLegend","titlePlusArrowWidth","requireLegendBounds","firstLegend","findFirstLegendPosition","legendCollections","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","shapeHeight","getLinearLegend","totalPages","legendSeriesGroup","previousLegend","shapeWidth","isRtlEnabled","textOptions","textPadding","shapePadding","bottomSapce","legendOption","accessbilityText","description","getRenderPoint","renderSymbol","toggleVisibility","selectionMode","highlightMode","renderPagingElements","xmlns","nextLegend","linerGradientEle","fillColors","numberItems","rangeColorSettings","diffValue","colorsLength","calculatedValue","fillColor","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startTextSize","endTextSize","textWidth","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","translatePage","gradientLegend","legendCollection","legendCollection_1","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","borderColor","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","markerShape","seriesBorder","symbolOption","markerVisibility","textOption","pageTextElement","paginggroup","iconSize","titleWidth","clipPathHeight","totalNoOfPages","calTotalPage","pagingText","pageNumber","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","mouseX","mouseY","targetId","clearTooltip","LegendOptions","cssClassName","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","iconPosition","isToggle","btnClickHandler","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_logLevel","_message","NullLogger","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","isQueryInvokedFromData","skipPage","columnQueryMode","selectQueryFields","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","infiniteScrollModule","isGrpFmt","formatGroupColumn","sortSettings","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignCols","defaultFltrCols","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","getKey","crud","deferred_1","getMilliseconds","pr","previousData","deff","endEdit","getState","getForeignKeyDataState","setForeignKeyDataState","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","AriaService","setOptions","setStateAndProperties","setExpand","setSort","setBusy","isBusy","busy","invalid","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","multiselectable","haspopup","colcount","rowcount","VScroll","browser","browserCheck","customStep","ieCheck","uniqueId","touchModule","touchHandler","swipe","swipeHandler","scrollEle","scrollEventHandler","createOverlayElement","createNavIcon","setScrollState","wheelEventHandler","scrollStep","scrollCnt","buildTag","scrollBar","innerEle_1","ele_1","scrollItems","navs","overlays","navEle","downOverlayEle","CLS_OVERLAY","clsDown","downEle","navItem","CLS_NAVDOWNARROW","upEle","eventBinding","nav","clsUp","navElement","navUpItem","CLS_NAVUPARROW","onKeyPress","ev","keyTimer","keyTimeout","eleScrolling","onKeyUp","tapHold","tabHoldHandler","repeatScroll","clickEventHandler","timeout","trgt","scrollDis","isContinuous","frameScrollRequest","deltaY","swipeElement","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisableCls","removeDisableCls","arrowIcon","navUpEle","navDownEle","upOverlay","downOverlay","disEle","baseDictionary","getNames","primitive","sName","generateName","PdfImage","PdfBitmap","pdfNames","fonts","dereference","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","imageStream","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","targetContainer","elemData","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","elemOffset","topCollideCheck","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","edge","updateElementData","setPosition","leftFlip","deepCheck","collideSide","topFlip","setPopup","eStatus","getTargetContainerLeft","getTargetContainerTop","windowWidth","documentReact","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","PdfBoolean","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","_createForOfIteratorHelper","F","it","normalCompletion","didErr","_e2","TextMessageFormat","RecordSeparator","messages","RecordSeparatorCode","defaultLocale","PdfStandardFontMetricsFactory","getMetrics","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","postScriptName","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","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","convert","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","createInternals","WinAnsiEncoding","charOffset","ChartAnnotationSettings","MultiLevelCategories","ScrollbarSettingsRange","selectedHandler","minHeight","minWidth","resizeWestWidth","elementClass","RESTRICT_LEFT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resize","setLeft","previousWidth","setBorderResizeElm","calculateValues","getDOMElement","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseMove","onMouseUp","coordinates","touches","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","ROOT","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","dlgClosedBy","initRender","setResize","getMinHeight","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","prevOnChange","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","resizeHandles","directionValue","resizeBegin","resizeComplete","boundary","resizeHandler","createResize","targetEle","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","ftrTemplateContent","focusableElements","buttonIndex_1","isTagName","isContentEdit","primaryButtonEle","setCSSClass","setMaxHeight","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setButton","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","dragEventArgs","buttonContent","buttonType","footerBtn","buttonClickHandler","isFlat","innerContentElement","templateProps","templateValue","dialogItem","headerEle","createHeaderContent","closeIcon","closeIconBtnObj","DLG_CLOSE_ICON","closeIconTitle","oldCSSClass","getValidFocusNode","u","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","closedBy","beforeCloseArgs","closeAnimation","getButtons","dialogObject","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","_unsupportedIterableToArray","minLen","HScroll","createOverlay","scrollDiv","overlay","navEles","rightOverlayEle","clsRight","rightEle","CLS_NAVRIGHTARROW","leftEle","clsLeft","navLeftItem","CLS_NAVLEFTARROW","rootEle","swipeEle","addDisable","removeDisable","navLeftEle","navRightEle","leftOverlay","rightOverlay","ContentRender","freezeRows","movableRows","currentInfo","prevCurrentView","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","rafCallback","mHdr","getMovableVirtualHeader","fHdr","getFrozenVirtualHeader","ariaService","getPanel","prevPage","infiniteScrollSettings","enableCache","maxBlock","maxBlocks","rowIdx","renderFrozenRightContent","isManualRefresh","allowTextWrap","case","enableDeepCompare","getModelGenerator","setVisible","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","setPanel","renderTable","contentDiv","virtualTable","virtualTrack","createContentTable","setTable","getTable","initializeContentDrop","getHeaderContent","cellspacing","setColGroup","getHeaderTable","getColGroup","currentViewData","currentMovableRows","frag","initialPageRecords","hdrTbody","trElement","hdrfrag","isInfiniteScroll","tbdy","modelData","fCont","mCont","cont","emptyVcRows","virtualInfo","sentinelInfo","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","updateVirtualCells","blockLoad","offsets","offsets_1","vGroupOffsets","bSize","isEndBlock","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","getBlockSize","rowTemplateID","getRowTemplate","lastElementChild","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","isVFTable","frCont","appendContent","renderNextFrozentPart","maintainRows","frozenCols","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getRows","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","panel","contentTable","infiniteRows","getMovableRows","getRowElements","getMovableRowElements","colgroup","testRow","fRows","mRows","rowLen","cellLen","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","clen","getNormalizedColumnIndex","colIdx","getColumnIndexByUid","getFrozenLeftColumnsCount","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","isXaxis","getHeaderColGroup","droppable","canSkip","GroupModelGenerator","getRowByIndex","getInfiniteRowIndex","firstRowIndex","getVirtualRowIndex","getMovableRowByIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","prevLen","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","old","primaryKey","getBatchChanges","isDirty","updateCellIndex","rowEle","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","isCollapseStateEnabled","ensureRowVisibility","parentid","childId","generateDataRows","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","indexes","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","wFlag","tmpFlag","GroupCaption","GroupCaptionEmpty","childID","childGid","gSummary","fkValue","cRow","caption","childRow","ColumnWidthService","setWidthToColumns","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","getColumnIndexByField","columnIndex","cWidth","getWidth","tgridWidth","setWidthToTable","headerCol","getContentTable","fWidth","contentCol","freezeLeft","freezeRight","movableCount","isColFrozen","frHdr","getFrozenRightHeader","getColumnLevelFrozenColgroup","editTableCol","refreshFrozenScrollbar","frzMode","freeze","frozenScrollbar","movableScrollbar","frozencontent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getMovableVirtualContent","getSiblingsHeight","getHeightFromDirection","sibling","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","editModule","generate","validator","passiveFocus","skipAction","onBlur","isFrozenRight","beforeArgs","byClick","clickArgs","clearOutline","skipOn","activeKey","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","setActiveByKey","lastIdxCell","clearIndicator","th","filterCell","focusVirtualElement","virtualData","isAdd","isCancel","isKeyFocus","selectedRowIndex","elementToFocus","preventScroll","getFocusedElement","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","getFocusInfo","addOutline","focusHeader","resetFocus","isJump","getInfo","focusedColumnUid","getColumnByIndex","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","updateRow","isRowTemplate","newMovableRows","newFrozenRows","newfrRows","handlerInstance","focusElement","cellPosition","gridPosition","passiveHandler","evtHandlers","filterfocus","restoreFocusWithAction","internalCellFocus","getPrevIndexes","forgetPrevious","getFocusable","allow","emptyTable","inValid","vector","keyActions","indexesByKey","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","firstIndex","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isSelectable","isCellWidth","getGridSeletion","allowSelection","allowColumnSelection","isLastCell","lastRow","headerSwap","fMatrix","focusModule","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","headerMat","ChartData","currentPoints","previousPoints","insideRegion","dragSettings","isRectSeries","isTransposed","markerWidth","getRectPoint","selectionModule","rectPoints","fromCenterX","fromCenterY","clickAngle","startAngle","endAngle","distanceFromCenter","arcAngle","isScrolling","regionData","regions","currentXPosition","atan2","innerRadius","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","region","isBar","getClosest","xvalues","xData","getClosestX","mergeXvalues","PdfGraphicsElement","drawHelper","bNeedSave","gState","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","getFont","getBrush","defaultFont","getPageFromGraphics","ByteArray","mPosition","dataView","DataView","readByte","getBuffer","writeFromBase64String","base64","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","argIndex","framesToPop","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","destroyScroll","scrollObj","skipEle","menu","HEADER","SELECTED","ITEM","HIDE","POPUP","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","tempItem","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","getWrapper","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","createItems","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","wireKeyboardEvent","rippleFn","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","keyType","openMenu","isCMenu","canOpen","ulIndex","isIterated","isMenuVisible","items_1","sli","popups","getPopups","isClose","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","trgtliId","closedLi","trgtLi","popupId","isOpen","unWireKeyboardEvent","toggleAnimation","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","removeStateWrapper","getMenuItemModel","getFields","separator","lItem","elemId","uList","lastChild","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","liStyle","liIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","menuType","observedOpenArgs","checkScrollOffset","collide","offWidth","iconCssProps","offsetEle","offsetRight","toggleVisiblity","newTop","xCollision","hasField","listBaseOptions","liTrgt","hdrWrapper","isDifferentElem","isClosed","cliWrapper","isInstLI","cliWrapperId","setLISelected","showSubMenu","culIdx","classname","getItemIndex","isUniqueId","newItem","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","toggle","ul_2","ul_3","getChangedItemIndex","insertAfter","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","pElement","isCallBack","skipItem","showItems","showHideItems","hideItems","ishide","removeItems","iitems","insertItems","isAfter","menuitem","itemId","parentId","ImageFormat","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","Unknown","mbitsPerComponent","mStream","mWidth","mImageData","internalBuffer","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","imageStatus","loadImage","initializeAsync","decoder","DropDownButton","isPopupCreated","openPopUp","addItems","getULElement","getTargetElement","getPopUpElement","appendItems","hasIcon","createAnchor","appendArrowSpan","setActiveElem","createPopupOnClick","activeElem","delegateMousedownHandler","mousedownHandler","popupWireEvents","keyEventHandler","observedArgs","openArgs","arrowSpan","emitBOM","encodingType","initBOM","getByteCount","chars","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","hookCallback","hooks","hasOwnProp","isObjectEmpty","createUTC","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","meridiem","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","M","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","sameDay","nextDay","nextWeek","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","defineLocale","abbr","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","W","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","millisecond","configFromObject","configFromInput","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","Duration","years","quarters","quarter","weeks","isoWeek","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","createAdder","period","addSubtract","isAdding","subtract","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toObject","toDate","keepOffset","inspect","zone","isLocal","for","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","errorMessage","trueProto","getCookieString","fetch","requireFunc","jar","fetchType","abortControllerType","AbortController","abortSignal","aborted","AbortError","abortController","timeoutId","msTimeout","TimeoutError","credentials","redirect","signal","HttpError","arrayBuffer","deserializeContent","HttpResponse","cookies","getCookies","HttpClient","MessageType","ontimeout","HubConnectionState","complete","subscribe","HttpTransportType","TransferFormat","connection","protocol","reconnectPolicy","nextKeepAlive","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","HandshakeProtocol","onreceive","processIncomingData","onclose","connectionClosed","callbacks","methods","closedCallbacks","reconnectingCallbacks","reconnectedCallbacks","invocationId","receivedHandshakeResponse","connectionState","Disconnected","connectionStarted","cachedPingMessage","writeMessage","Ping","HubConnection","connectionId","Reconnecting","startPromise","startWithStateTransitions","Connecting","Debug","startInternal","Connected","stopDuringStartError","handshakePromise","handshakeResolver","handshakeRejecter","transferFormat","handshakeRequest","sendMessage","writeHandshakeRequest","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stopPromise","stopInternal","Disconnecting","reconnectDelayHandle","completeClose","promiseQueue","streams","streamIds","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","sendWithProtocol","invocationEvent","Completion","launchStreams","sendPromise","createInvocation","invoke","newMethod","removeIdx","onreconnecting","onreconnected","processHandshakeResponse","parseMessages","Invocation","invokeClientMethod","StreamItem","Close","allowReconnect","responseMessage","remainingData","features","inherentKeepAlive","timeoutHandle","pingServerHandle","nextPing","serverTimeout","invocationMessage","cancelCallbacksWithError","reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","getNextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","nonblocking","streamId","createCompletionMessage","createStreamItemMessage","replaceStreamingParams","isObservable","StreamInvocation","CancelInvocation","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","retryDelays","retryContext","isAborted","pollAbort","running","connect","Binary","pollOptions","getAccessToken","updateHeaderToken","pollUrl","closeError","receiving","poll","pollAborted","raiseOnClose","deleteOptions","logMessage","eventSourceConstructor","opened","Text","eventSource","Cookie","onmessage","onopen","webSocketConstructor","webSocket","binaryType","_event","ErrorEvent","OPEN","isCloseEvent","wasClean","stopPromiseResolver","negotiateVersion","resolveUrl","webSocketModule","eventSourceModule","WebSocket","EventSource","startInternalPromise","sendQueue","TransportSendQueue","transport","stopError","stopConnection","skipNegotiation","WebSockets","constructTransport","startTransport","negotiateResponse","redirects","getNegotiationResponse","ProtocolVersion","accessToken","createTransport","negotiateUrl","resolveNegotiateUrl","connectionToken","createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","isITransport","transportExceptions","transports","availableTransports","negotiate","endpoint","transportOrError","resolveTransportOrError","ServerSentEvents","LongPolling","actualTransport","transportMatches","transferFormats","aTag","executing","sendBufferedData","PromiseSource","transportResult","sendLoopPromise","sendLoop","bufferData","concatBuffers","arrayBuffers","rejecter","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","LogLevelNameMapping","trace","information","warning","critical","none","configureLogging","logging","mapping","parseLogLevel","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","DefaultReconnectPolicy","build","_arrayLikeToArray","tempDictionaryProperties","objectStatus","saving","boolToStr","msgId","isUserAct","messageId","_InternalLogMessage","AiUserActionablePrefix","AiNonUserActionablePrefix","strProps","diagnosticText","sanitizeDiagnosticText","AIInternalMessagePrefix","_messageCount","_messageLogged","enableDebugExceptions","consoleLoggingLevel","telemetryLoggingLevel","maxInternalMessageLimit","loggingLevelConsole","loggingLevelTelemetry","maxMessageLimit","severity","messageKey","WARNING","warnToConsole","logInternalMessage","resetInternalMessageCount","_areInternalMessagesThrottled","throttleLimitMessage","throttleMessage","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","headerTempID","headerTextAlign","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","scrollModule","setHeight","setPadding","refreshDataManager","dataLength","prevPageMoving","pagerModule","pagerObj","resetTemplates","detailTemplateID","toolbarTemplate","isFActon","isNeedForeignAction","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerSuccess","dataManagerFailure","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","updatesOnInitialRender","isInitialLoad","refreshUI","enableImmutableMode","isCaptionCollapse","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","HeaderRender","cellrender","addCellRenderer","DetailHeader","RowDragHIcon","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","CellRendererFactory","cellRenderMap","ServiceLocator","registerAdaptiveService","isAdaptiveUI","responsiveDialogRenderer","ResponsiveDialogRenderer","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","Selection","selectedRowIndexes","selectedRowCellIndexes","selectedRecords","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isKeyAction","isRowDragSelected","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","initializeSelection","onActionBegin","fDataUpdate","getRowObj","currentIndex","gridElement","hidePopUp","clearSelection","isEditing","formObj","isPersistSelection","getSelectedMovableRow","getSelectedFrozenRightRow","getFrozenRightContent","getFrozenRightRowByIndex","getCurrentBatchRecordChanges","currentRecords","selectRow","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","selectedMovableRow","selectedFrozenRightRow","isAvailable","frozenData","getRowObjectByIndex","getRowObjectFromUID","getSelectedRecords","clearRowSelection","isRowType","isRowSelected","activeTarget","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","isRemoved","can","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","mRow","frRow","mObj","previousMovRow","selectRowsByRange","endIndex","selectRows","getCollectionFromIndexes","rowIndexes","isSingleSel","selectedRows","currentRow","prevRow","selectRowFn","rowIndexes_1","checkboxOnly","checkboxColumn","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","chkState","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","chkBox","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","target_1","frRows","getFrozenRightRows","isRowClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","getSelectedMovableCell","getMovableCellFromIndex","getColIndex","selectCell","isCellType","selectedCell","getCellFromIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","cellSelectingArgs","clearCell","updateCellSelection","currentCell","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","addMovableRows","mouseMoveHandler","gBRect","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","getMovableContent","mcBdrElement","frcBdrElement","fhBdrElement","headerModule","getMovableHeader","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","updateCell","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","colLen","cellIdx","endCell","startCellIndex","trIdx","mouseUpHandler","mUPTarget","updateAutoFillPosition","lastCell","updateStartCellsIndex","autofill","enableAutoFill","rindex","isFrozenCol","isFrozenRow","colWidth","allowRowDragAndDrop","enableDrag","postion","clearSelAfterRefresh","onCellFocused","refreshHeader","actionBeginFunction","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyDownHandler","keyUpHandler","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","gobj","chkField","refreshPersistSelection","setRowSelection","editChkBox","onDataBound","getSelectedRows","totalRecords","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","isInteraction","checkedLen","popUpClickHandler","chkSelect","hoverFrozenRows","headerSelectionHandler","headerAction","thLen","selectedIndexes","getSelectedRowCellIndexes","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","getColumnByUid","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","headerCell","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","columnDeselect","selectedHeader","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","showBy","getToggleFields","hideBy","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","col1","col2","Scroll","previousValues","oneTimeReady","widthService","uiupdate","toolbarModule","toolbar","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","cssProps","getCssProperties","removePadding","hDiv","footerDiv","getFooterContent","setScrollLeft","onFrozenContentScroll","isPreventScrollEvent","onContentScroll","scrollTarget","isDown","scrollDown","onCustomScrollbarScroll","onTouchScroll","pointerType","pageXY","getPointXY","setPageXY","getScrollbleParent","scrollingElement","addStickyListener","makeStickyHeader","mScrollBar","enableStickyHeader","sHeight","contentRect","getClientRects","toolbarEle","groupHeaderEle","parentTop","elemTop","setSticky","ccDlg","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","isMacLike","metaKey","clipBoardTextArea","x_1","y_1","scrollTo","isAvail","dataRows","fTr","mTr","setCopyData","withHeader","getSelection","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","isCell","splitKey","isElement","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","inViewIndexes","keyA","frozenRightCount","frozenLeftCount","tablesCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","rowUid","lockcolPositionCount","pageTemplateChange","mediaBindInstance","commandDelIndex","asyncTimeOut","enableLogger","Grid_1","mergePersistGridData","keyEntity","scrollPosition","currentObject","pagerTemplate","persistData","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","mergeCells","filterOperators","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","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","Group","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","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","f2","ctrlEnter","shiftEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","getMediaColumns","checkLockColumns","processModel","gridRender","addListener","updateDefaultCursor","updateStackedFilter","gcol","getShowHideService","pushMediaColumn","matchMedia","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","footerContent","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","clipboardModule","printModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","isEllipsisTooltip","updateColumnObject","properties_1","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","isModeChg","pending_1","deepWatch","gResult","enableVerticalRendering","fn_1","filterModule","refreshFilter","setTablesCount","getTablesCount","headerCells","stdHdrCell","getHeaderCells","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","lockColumn","isRefresh","inview","vLen","ensureFrozenCols","getStackedHeaderColumnByHeaderText","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getRowInfo","rowData","rowsObject","getFrozenRightRowElements","includeAdd","getFrozenLeftContentTbody","mrows","includAdd","dRows","getAllFrozenDataRows","pkName","fieldIdx","frIdx","Idx","sRow","columnUid","rowsObj","rowObjects","rowRenderer","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","isMovable","getColumnHeaderByField","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","clearSorting","removeSortColumn","filterByColumn","filterOperator","filterValue","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","fieldname","startEdit","deleteRow","editCell","saveCell","enableToolbarItems","recalcIndentWidth","indentWidth","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","textWrapSettings","wrapMode","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerTable","headerRows","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","gridLines","opensOn","getTooltipStatus","htable","ctable","prevElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","allowKeyboard","tapEvent","dataBoundFunction","isChildGrid","checkEdit","dataRow","filterClear","ariaOwns","keyPress","editFormValidate","persistedData","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","presskey","collapse","setInjectedModules","refreshColumns","fCnt","frCnt","mTbl","frTbl","colGrp","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","groupColumn","groupModule","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","getPreviousRowData","hideScroll","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getRowUid","getFrozenVirtualContent","getRowElementByUID","frozenRigtRows","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","showDropArea","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","setHeaderText","gridInput","include","getFormat","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","addRowObject","moveTbody","updateVisibleExpandCollapseRows","isInteger","getFrozenHeaderTbody","showResponsiveCustomFilter","showCustomFilter","showResponsiveCustomSort","showCustomSort","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","TtfTableInfo","checksum","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","tableKeys","tableInfo","formatSelector","readUInt16","recordsCount","nameRecords","platformID","encodingID","languageID","nameID","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","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","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","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","updateWidth","getGlyph","byteToProcess","getDefaultGlyph","readLocaTable","bShort","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","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","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result2","written","base64String","nameString","isCompress","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfMetrics","fontDictionary","fontProgram","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","ForceBold","isCaseChange","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","initReactI18next","setDefaults","react","setI18n","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","updateStyles","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","customText","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","Pager","hasParent","pageRefresh","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","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","Page","isInitialRender","pagerDestroy","gridExtend","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isForceCancel","previousPage","appendToElement","inboundChange","componentWillMount","getDerivedStateFromProps","componentWillReceiveProps","prevState","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","_setPrototypeOf","__esModule","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","renderPrintGrid","printWind","resizeTo","screen","availWidth","availHeight","printGrid","viewContainerRef","injectedModues","printgrid","headerDiv","waitingPop","printGridElement","groupCaption","colGroups","contentColGroups","hideColGroup","sortedCols","sortPredicate","isCustomDialog","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","renderResponsiveContent","customColumnDiv","sortBtnParent","isSort","cDiv","getSortedFieldsAndDirections","onclick","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","setSortedCols","getCurrentSortedFields","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","filteredCol","renderResponsiveDialog","setFilterModel","createOptions","setTopToChildDialog","outerDiv","customFilterDlg","getDialogOptions","adaptiveDlgTarget","renderResponsiveHeader","sortField","closeResponsiveDialog","closeCustomFilter","keyHandler","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","cloneElement","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","tHead","createHeader","tableEle","tblName","findHeaderRow","thead","bodyCell","rowBody","updateColGroup","colHeader","headerRow","colFreezeMode","len_2","lockColsRendered","appendCells","isFirstObj","isLastCol","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","getColSpan","isFirstCol_1","isLaststackedCol","isTrue","lockColsCount","getFrozenColSpan","normalizedfrzCols","mTblColGrp","freezeReorder","getVirtualFreezeHeader","gCells","toolbarLeft","toolbarItem","resToolbar","spannedCell","targetCell_1","colSpanLen","colSpanRange","spanText","backupMergeCells","fName","setMergeCells","generteKey","fname","getMergeCells","mCells","getIndexFromAllColumns","vColumnIndices","pageNumberFieldLocation","pageNumberField","OTHERMONTH","DISABLED","FOCUSEDDATE","CalendarBase","MaskPlaceholder","isPopupClicked","isDateSelected","isTodayClicked","rangeValidation","calendarEleCopy","calendarMode","globalize","todayDisabled","todayDate","calendarElement","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","shiftPageUp","shiftPageDown","controlHome","controlEnd","spacebar","altRightArrow","altLeftArrow","validateDate","checkDateValue","checkValue","setOverlayIndex","modal","minMaxUpdate","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","contentElement","createContentHeader","createContentBody","showTodayButton","createContentFooter","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","html","tableHeadElement","weekNumber","shortNames","shiftArray","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","today","todayButtonClick","keyConfig","blazorRef","serverModuleName","navigateTitle","keyActionHandle","dateWireEvents","isCustomDate","currentView","getViewNumber","resetCalendar","tableBodyElement","renderDayCellArgs","checkDeviceMode","multiSelection","selectedDate","focusedDate","Action","Key","Events","SelectDate","FocusedDate","Id","TargetClassList","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","addMonths","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isDisabled","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","getFromatStringValue","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","timeOffset","findLastDay","classNm","trEle","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","getIdValue","islamicDate","getIslamicDate","switchView","validateValues","checkView","copyValues","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","stringVal","islamicPrevious","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","tzOffset","tzOffsetDiff","getMaxDays","setDateDecade","setDateYear","checkPresentDate","checkPrevious","navigatedEvent","navigatedArgs","compare","startDate","endDate","modifier","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","Calendar","tempValues","copyDate","setClass","formResetHandler","setTimeZone","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","timeZoneDiff","changedArgs","generateTodayVal","todayButtonEvent","changeHandler","triggerChange","previousDate","previousDateTime","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","addDate","tempDates","removeDate","setTodayDate","changeEvent","ColorPickerInput","renderFactory","itemConfigs","initializeInstance","toolbarRenderer","Toolbar","renderColorPickerInput","suffixID","containerType","tbElement","getID","fontNode","fontColorPicker","fontColorDropDown","renderColorPickerDropDown","backNode","backgroundColorPicker","backgroundColorDropDown","setRtl","borderBottomColor","presetColors","modeSwitcher","BaseToolbar","getClass","getTemplateObject","inlineMode","prefixIcon","callback_1","undo","getUndoRedoStack","tbItems_1","getToolbarOptions","rteToolbarObj","overflowMode","renderToolbar","DropDownButtons","beforeRender","dropdownContent","renderDropDowns","formatOLItem","numberFormatListDropDown","renderListDropDown","formatULItem","bulletFormatListDropDown","formatItem","renderDropDownButton","fontItem","getEditNode","imageAlignmentDropDown","imageDisplayDropDown","rowDropDown","columnDropDown","cellDropDown","verticalAlignDropDown","tableStylesDropDown","getUpdateItems","dropDownItems","fontItems","getEditPanel","tableRowsDropDown","tableColumnsDropDown","tableCellVerticalAlignDropDown","displayDropDown","imageAlignDropDown","tableSettings","removeDropDownClasses","destroyDropDowns","onIframeMouseDown","calculateNumericNiceInterval","actualDesiredIntervalsCount","niceInterval","minInterval","currentInterval","getActualRange","initializeDoubleRange","startFromZero","POSITIVE_INFINITY","NEGATIVE_INFINITY","calculateRange","applyRangePadding","calculateVisibleLabels","paddingInterval","maxPointLength","yAxisRange","findMinMax","dragY","findAdditional","findNormal","updateActualRange","calculateVisibleRange","enableAutoIntervalOnZooming","duplicateTempInterval","intervalDigits","formatDigits","formatValue","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__10__","installedModules","__webpack_require__","moduleId","toStringTag","react_router_dom_1","LastLocationContext_1","prevent_1","lastLocation","LastLocationProvider","nextLocation","watchOnlyPathname","shouldPrevent","hasBeenPrevented","prevent","updateLastLocation","Provider","propTypes","defaultProps","getLastLocation","setLastLocation","nextLastLocation","LastLocationContext","withLastLocation_1","withLastLocation","LastLocationProvider_1","useLastLocation_1","useLastLocation","RedirectWithoutLastLocation_1","RedirectWithoutLastLocation","WrappedComponent","WithLastLocation","getDisplayName","__rest","prevented","preventedLocation","preventLastLocation","react_1","history_1","finalTo","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","doShape","ArabicShape","present","ligature","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","LRE","LRO","R","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","B","S","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","lt","tt","rt","openBracket","closeBracket","customLayout","customSplitLayout","getGlyphIndex","glyphs","layouted","addChars","ObjectType","maxGenNumIndex","objectCount","merging","internalTrailer","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","bForceNew","saveIndirectObject","tempArchive","doSaveObject","free","RegisteredObject","tempOffset","offsetNumber","tempReference","CLS_ITEMS","CLS_ITEM","CLS_POPUP","resizeContext","popupOpen","popupClose","btnItems","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","tbarItemsCol","isExtendedOpen","popupPriCount","keyModule","docKeyDown","unwireKeyboardEvent","popCheck","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","isPopupElement","clsList","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderControl","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","changeOrientation","initScroll","innerItems","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","vertical","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","eleStyles","borderRightWidth","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","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","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","btnItem","templateRender","templateProp","isComponent","itemType","buttonRendering","dom","iconPos","textStr","btnTxt","suffixIcon","tempDom","itemClick","showTextOn","sTxt","multirowele","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","eleIndex","innerItems_2","nextEle","setFlag","removeFlag","initELe","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","Transition","TransitionGroup","ReplaceTransition","CSSTransition","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","animateDropper","draggableType","preventDrop","rearrangeGroup","dragField","dropTarget","dropField","dropIndex","dragIndex","addColToGroupDrop","addLabel","removeColFromGroupDrop","aria","contentRefresh","groupGenerator","dragLabel","refreshSortIcons","onGroupAggregates","updateExpand","grpRow","expandCollapseRows","applySortFromTarget","unGroupFromTarget","toogleGroupFromHeader","showToggleButton","gHeader","rowNodes","updateVirtualRows","captionExpand","captionCollapse","rowObjs","startIdx","rowsState","isCollapse","rObj","prevInfo","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","initializeGHeaderDrop","initializeGHeaderDrag","colName","groupAddSortingQuery","animator","groupedColumn","childDiv","showUngroupButton","createSeparator","getGHeaderCell","updateGroupedColumn","updateButtonVisibility","editedData","iterateGroupAggregates","updateSummaryRows","dataUid","updatedData","initData","deletedCols","changeds","mergeData","pKeyVal","cItem","eData","aggrds","aggregateRows","aggr","groupedCols","closestParent","RIPPLE","containerAttr","isMouseClick","changeState","ariaState","changeEventArgs","updateVueArrayModel","stopPropagation","focusHandler","initialCheckedValue","setDisabled","initWrapper","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","argv","once","removeAllListeners","prependListener","prependOnceListener","binding","chdir","umask","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","asterisk","partial","repeat","escapeGroup","encodeURIComponentPretty","encodeURI","segment","attachKeys","re","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","bitReverse","elementCount","minCodes","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum_uint","s2","checkSumBitOffset","checksumIterationCount","checksumBase","extension","mimeType","getMimeType","downloadLink","saveInternal","hasDownloadAttribute","download","dataUrl_1","URL","createObjectURL","revokeObjectURL","reader_1","FileReader","onloadend","readAsDataURL","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","colObj","initiateSort","showPopUp","colUid","enableSortMultiTouch","allowUnsort","filterElement","updateAriaAttr","DatePicker","previousElementValue","isDateIconClicked","isAltKeyPressed","isBlazorServer","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","datepickerOptions","updateInput","setAllowEdit","allowEdit","enableMask","checkInvalidValue","updateInputValue","inputValueCopy","ariaAttrs","l10nLocale","INPUTWRAPPER","isDynamic","isCalendar","disabledDates","strictMode","minMaxUpdates","dateValue","tempFormat","formatString","dateTimeFormat","errorClass","checkStringValue","returnDate","formatDateTime","valueString","basicISOString","bindInputEvent","inputHandler","preventEventBubbling","dateIconHandler","inputFocusHandler","inputBlurHandler","keydownHandler","inputChangeHandler","resetFormHandler","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","updatedClassValues","updateHtmlAttributeToElement","updateCssClass","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","clickedView","defaultAction","targetdate","dateOptions","createCalendar","modelHeader","preventArgs","setAriaAttributes","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","selectCalendar","outOfRange","mobilePopupWrapper","prevent_2","closeEventCallback","triggerEvent","inputElementCopy","ensureInputAttribute","ngTag","checkHtmlAttributes","nameAttribute","checkFormat","skeletonString","dynamic","valueCopy","previousValCopy","dateIdString","isDisabledDate","dayOfTheWeek","_isinitialized","_rootCtx","_nextPlugin","_getTelCtx","setInitialized","currentCtx","rootCtx","_baseTelInit","extensions","pluginChain","getProcessTelContext","PdfBorderOverlapStyle","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","borders","setParent","gridRowBackgroundImage","setBackgroundImage","ElementLayouter","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","FitElement","PdfTextWebLink","getTextPageBounds","remainderText","lastLineTextBounds","PdfTextElement","elementValue","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","startPosition","PdfAnnotation","textFont","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridLayouter","gridInitialWidth","gridSize","parentCellIndex","tempWidth","childheight","hasRowSpanSpan","isRearranged","pageBounds","listOfNavigatePages","columnRanges","breakRow","slr","isPaginate","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","getRow","startLocation","hType","horizontalOverflowType","allowHorizontalOverflow","measureColumnsWidth","determineColumnDrawRanges","isRowHeightSet","startColumn","endColumn","cellWidths","availableWidth","getColumn","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","currentRowIndex","drawHeader","getHeader","isCellMergeContinue","headerResult","drawRow","repeatRowIndex","isFinish","OnePage","getNextPageformat","repeatRow","rowResult","splitChildRowIndex","isrowFinish","ParentCell","isGridSplit","rowCollection","tempResult","raisePageLayouted","allowRowBreakAcrossPages","cellPadding","rowBreakHeight","isRowBreaksNextPage","rowBreakHeightValue","i_2","noOfPageCount","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","i_4","PdfGrid","i_5","NestedGridLayoutResult","recalHeight","ReCalculateHeight","secion","pageGraphics","location_2","cellWidth","totalwidth","i_6","columnWidth","drawCellBorders","columnSpan","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","pageindex","CheckIfDefaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","raiseBeginCellDraw","PdfGridBeginCellDrawEventArgs","onBeginCellDraw","raiseAfterCellDraw","cellstyle","raiseEndCellDraw","PdfGridEndCellDrawEventArgs","onEndCellDraw","count_1","repeatFlag","PdfGridLayoutResult","newHeight","measureHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","rowSpanExists","maxSpan","currRowIndex","LayoutFormat","FitPage","drawRowWithBreak","repeatRowNumber","isFit","rowMergeComplete","Paginate","isFitToCell","location_4","cancelSpans","rowOverflowIndex","cellSpacing","gridRow","layouter","isCustomWidth","calculateHeight","gridHeight","cellstyle1","FinishedDrawingCell","rowBreakPageHeightCellIndex","PdfGridLayoutFormat","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","cellStyle","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","layoutedBounds","bIsFinished","PdfGridCell","cellHeight","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","gridRowSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","remaining","objectValue","isSingleGrid","colCount","columnSpanExists","isComplete","measureWidth","getTextFont","webLink","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","rowFontSplit","layoutRect","setSpan","checkSpan","childGridResult","imageBounds","borderOverlapStyle","Inside","Square","currentColIndex","compWidth","calculateWidth","currentValue","internalWidth","PdfGridCellCollection","tempcell","PdfGridColumn","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","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridStyle","ispageWidth","ischildGrid","measure","parentCell","gridLocation","currentCellIndex","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","columnCount","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","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","letter","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","pdfTemplate","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","PdfExport","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","exportValueFormatter","isExporting","pdfPageSettings","exportWithData","processExport","blobPromise","hierarchyExportMode","headerPageNumbers","gridDrawPosition","allPromise_1","processSectionExportProperties","processGridExport","Landscape","Portrait","getPageSize","gridTheme","processExportProperties","headerThemeStyle","getHeaderThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","summaryModel","sRows","aggregateModule","prepareSummaryInfo","processAggregates","getFontFamily","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordSize","recordStyle","fontFamily_3","groupIndex","dataSourceItems","cArgs","captionText","captionSummaryModel","eCols","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","gridCell","evtArgs","hyperLink","setHyperLink","recuHeader","spanCnt","isRoot","cidx","newSpanCnt","fromBottom","drawPageTemplate","PdfPageTemplateElement","includeHiddenColumn","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isGroupedFooter","sRows_1","leastCaptionSummaryIndex","getSummaryWithoutTemplate","templateFunction","Sum","Average","Max","Min","TrueCount","FalseCount","setRecordThemeStyle","borderRecord","cellLength","cellValue","processCellStyle","gridRow_1","childGridCell","textLink","displayText","backColor","verticalAlign","hAlign","vAlign","bigint","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","Width","Height","CellStyle","numFmtId","wrapText","Borders","isGlobalStyle","sz","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","mLine","mColor","Rows","Cells","CRC32TABLE","ZipArchive","initCrc32Table","ZipArchiveItem","addDirectory","directoryName","zipArchive","saveAsBlob","blob","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","centralLength","localLength","modTime","modiDate","CsvHelper","csvStr","globalStyles","worksheets","parseWorksheet","parseRows","parseRow","parseCell","csv","parseCellValue","dwlLink","BlobHelper","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","company","manager","createdDate","modifiedDate","jsonSheet","sheet","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","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","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","hyperlink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","lastColumn","horizontalFlip","verticalFlip","blobSaveType","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","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","byteStr","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","processString","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","horizontal","numFmtStyle_1","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","updatedMergedCellStyles","sCell","eCell","dateToTicks","timeToTicks","ticks","daysTo1899","ExcelExport","book","workSheet","rowLength","expType","isCsvExport","isElementIdChanged","isCsv","gridObject","processRecords","exportingSuccess","query_1","processInnerRecords","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","childRows","excelRows","gColumns","groupIndent","processHeaderContent","processRecordContent","currentViewRecords","excelRow","processRecordRows","processGroupedRows","getCaptionThemeStyle","groupCaptionSummaryRows","fillAggregates","lIndex","hIndex","tCell","templateRowHeight","gCell","fkData","excelCellArgs","setImage","getColumnStyle","returnVal","excelImage","excelExportProps","gRow","intent","rec","byGroup","groupSummaryRows","customIndex","getAggreateValue","aggregateStyle","gridCellStyle","JSON1","JSON2","attrname","spannedCells","parseStyles","getRecordThemeStyle","excelHeaderCellArgs","updateThemeStyle","themestyle","noRows","updatedCellIndex","footerRows","spannedCells_1","FILE","STATUS","REMOVE_ICON","DELETE_ICON","ABORT_ICON","RETRY_ICON","PROGRESS_WRAPPER","PROGRESSBAR","UPLOAD_SUCCESS","UPLOAD_FAILED","PAUSE_UPLOAD","wrapperAttr","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","multiple","uploadedFilesData","isForm","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","updateHTMLAttrToElement","updateHTMLAttrToWrapper","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","autoUpload","uploadButton","listParent","createFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","localeText","Browse","Upload","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","pause","resume","fileUploadCancel","invalidFileSelection","totalFiles","isBlazorTemplate","isBlazorSaveUrl","asyncSettings","saveUrl","sequentialUpload","formRendered","isPureReactComponent","browserName","directoryUpload","dropAreaWrapper","setDropArea","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","serverUlElement","serverRemoveIconBindEvent","checkAutoUpload","uploadButtonClick","clearButtonClick","uploadText","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","allowUpload","showFileList","dropTextArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","pro","uploadStyle","newAttr","createAttribute","setAttributeNode","sequenceUpload","isFileListCreated","updatedCssClassValue","updatedOldCssClass","browseButtonClick","onSelectFiles","resetForm","metaData","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","kind","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","formData","FormData","currentRequest","currentRequestHeader","updateCustomheader","customFormDatas","updateFormData","removingEventCallback","removeCompleted","removeFailed","postRawFile","customFormData","customData","getResponse","updateStatus","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","files_2","fileObj","fullPath","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","directory","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","checkExtension","_internalRenderSelect","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","singleUpload","previousListClone","removedList_1","oldList","createParentUL","isBlank","dropFiles","extensions_1","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","uploadTemplateFn","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","isSelectedFile","fileListData","fileData_7","textContainer","fileExtension","preventActionComplete","getSlicedName","nameElement","dataset","tail","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","removecanceledFile","renderFailureState","removeProgressbar","deleteIcon","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","removeIconEle","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","animateProgressBar","uploadTemplate","isMutiple","fileIndex","chunkSize","chunkIndex","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","name_4","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","uploadFileCount","getFileRead","fileCount","getFileInfo","_loop_5","File","uploadFilesRequest","getFileData","cloneFiles","chunkEnabled","name_5","spliceFiles","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","_loop_6","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","SPINICON","SPINUP","INTREGEXP","wrapperAttributes","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","hiddenInput","showSpinButton","spinDown","spinUp","wireSpinBtnEvents","createWrapper","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","elementPrevValue","setNumber","stepValue","getNumericValidClassList","numericClassName","numericStyle","formattedValue","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","keyupEvent","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","parseValue","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","serverDecimalSeparator","EXPREGEXP","decimalPart","currentChar","fractionRule","validateDecimalOnType","mouseWheel","rawEvent","wheelDelta","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","getText","updateSpinButton","updateClearButton","propValue","propIsEnumerable","test1","test2","test3","shouldUseNative","UNMOUNTED","_interopRequireWildcard","_react","_reactDom","_reactLifecyclesCompat","_React$Component","initialStatus","parentGroup","transitionGroup","appear","isMounting","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_proto","getChildContext","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","findDOMNode","performEnter","performExit","appearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","_this$props","Children","only","contextTypes","childContextTypes","_default","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","handleExited","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","arrayWithHoles","iterableToArrayLimit","nonIterableRest","commonjsGlobal","createEventEmitter","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","Consumer","_Component2","observedBits","_proto2","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","CarouselItem","isAppearing","CustomEvent","slide","Tag","transitionProps","directionClassName","orderClassName","itemClasses","fileItems","folderItems","layoutItems","ContextMenuSettings","UploadSettings","resizeClassList","Resize","tapped","isDblClk","findColumn","newarray","resizeColumn","footerTable","headerTextClone","contentTextClone","footerTextClone","contentDivTag","footerDivTag","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wContent","wFooter","columnbyindex","colMaxWidth","calcTableWidth","tableWidth","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","mtbody","ftbody","frtbody","ftr","frTr","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","fLeft","timeoutHandler","conformToMask","setRef","textMaskInputElement","initTextMask","pipe","mask","guide","placeholderChar","showMask","isNil","keepCharPositions","PureComponent","convertMaskToPlaceholder","processCaretTraps","maskWithoutCaretTraps","previousConformedValue","currentCaretPosition","O","T","V","I","D","J","U","conformedValue","meta","someCharsRejected","previousPlaceholder","indexesOfPipedChars","caretTrapIndexes","G","rejected","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","instanceOf","objectOf","oneOf","checkPropTypes","parseHandshakeResponse","messageData","Buffer","binaryData","separatorIndex","responseLength","textData","_react2","_implementation2","_TagManager","_TagManager2","_isNativeReflectConstruct","construct","sham","_createSuper","Derived","Super","NewTarget","PdfPageSize","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","pageMargins","rotateAngle","RotateAngle0","isRotation","updateSize","pick","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","routeSegments","routeSegment","uriSegment","isSplat","decodeURIComponent","dynamicMatch","paramRe","reservedNames","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","insertParams","rankRoute","isRootSegment","SEGMENT_POINTS","_source$location","hostname","port","transitioning","resolveTransition","_onTransitionComplete","popstateListener","_ref$replace","transition","initialPath","states","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","createMemorySource","_objectWithoutProperties","Ctx","LocationContext","LocationProvider","refs","_props$history","componentDidCatch","isRedirect","_navigate","unmounted","BaseContext","baseuri","basepath","baseContext","locationContext","RouterImpl","_React$PureComponent","_navigate2","_props$component","domProps","createRoute","FocusWrapper","FocusHandler","wrapperProps","FocusContext","_ref3","requestFocus","FocusHandlerImpl","focusHandlerCount","_React$Component2","_temp2","shouldFocus","myURIChanged","navigatedUpToMe","_props2","_props2$component","Comp","RedirectRequest","_ref4","_ref5","_ref6","_props$getProps","getProps","anchorProps","encodedHref","isCurrent","isPartiallyCurrent","shouldNavigate","shouldReplace","_location$state","restState","obj1Keys","shallowCompare","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","redirectTo","_ref7","stripSlashes","Fragment","validateRedirect","elementPath","defaultPrevented","receiver","sourceSymbolKeys","ContextMenu","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","K","__self","__source","_owner","Q","keyPrefix","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","lazy","_ctor","_status","_result","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","da","ea","fa","ha","ia","ja","la","ma","na","oa","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","Ya","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","lineNumber","return","rb","sb","xb","_valueTracker","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","WeakMap","cc","alternate","effectTag","ec","memoizedState","dehydrated","hc","gc","ic","jc","kc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","correspondingUseElement","oc","pc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRowEnd","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","md","setProperty","nd","br","embed","hr","keygen","track","wbr","od","pd","is","qd","rd","sd","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","ee","eventPool","fe","destructor","de","getPooled","cancelBubble","eventPhase","bubbles","cancelable","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","se","ve","te","ue","we","datetime","email","password","tel","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","fromElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","gf","hf","jf","anchorNode","anchorOffset","focusNode","focusOffset","kf","lf","animationName","elapsedTime","pseudoElement","mf","nf","of","pf","Esc","Spacebar","Up","Down","Del","Win","Menu","Apps","MozPrintableKey","qf","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","tf","targetTouches","uf","vf","deltaX","wheelDeltaX","wheelDeltaY","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","effects","vg","wg","suspenseConfig","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","Ng","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","pendingContext","ni","pi","qi","retryTime","ji","fallback","unstable_avoidThisFallback","ki","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","wasMultiple","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","setStart","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","Lj","lk","findFiberByHostInstance","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","getShim","ReactPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_addClass","_removeClass","getClassNames","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","handleEnter","handleLifecycle","handleEntering","handleEntered","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","inProp","_React$Children$toArr","mergeChildMappings","nextChildMapping","hasPrev","prevChild","isLeaving","mapFn","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","allocUnsafe","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","fromString","isBuffer","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","LN2","webpackPolyfill","_propTypes2","_gud2","_Snippets","_Snippets2","TagManager","dataScript","dataLayer","gtm","snippets","noScript","noscript","dataLayerVar","gtmId","_ref$events","_ref$dataLayerName","dataLayerName","_ref$auth","auth","_ref$preview","_ref2","_dataLayer","_ref2$dataLayerName","_warn","_warn2","Snippets","gtm_auth","gtm_preview","fs","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","keyValueArr","isDoubleQuoted","dotenvPath","readFileSync","normalizeArray","allowAboveRoot","xs","resolvedPath","resolvedAbsolute","normalize","trailingSlash","relative","samePartsLength","outputParts","dirname","hasRoot","matchedSlash","extname","startDot","startPart","preDotState","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","autocomplete","multiline","textarea","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","setInitialValue","inputClassName","animationHandler","resetValue","interaction","resetInputHandler","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","LOAD","PROCESS","ICON","TEXTWRAP","DROPIN","DROPNEXT","CHECKBOXWRAP","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","ctrlDown","ctrlUp","ctrlA","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isInitalExpand","setTouchClass","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","setFullRow","fullRowSelect","nodeTemplateFn","nodeTemplate","iconModel","rippleIconFn","isEnabled","setMultiSelect","firstUl","isOffline","treeData","isNumberTypeId","getType","setRootData","finalize","rootData","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isSorted","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","resultData","resultId","childData","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","preElement","childCheckedElement","nodeId","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","textEle","dataId","renderNodeTemplate","nodeData","actionValue","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","setValidCheckedNode","dynamicCheckState","updateField","validateCheckNode","currLi","getNodeData","updateIndeterminate","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","isPrevent","nodeCheckAction","getCheckEvent","removeCheck","ensureStateChange","firstNode","updateIdAttr","hasPid","doExpandAction","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","rippleIcons","setFocusElement","checkWrapper","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","getChildGroup","objlen","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","startNode","liList","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","getScrollParent","parentPos","isVisibleInViewport","txtWrap","isTowards","nextNode","getNextNode","getPrevNode","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","childId_1","toBeOpened","focusNextNode","rootNode","getRootNode","getEndNode","fNode","prevNode","endNode","preNode","hoveredNode","fromDS","pNode","nodeFields","tempArr","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","wireInputEvents","editData","editFields","inputFocusOut","txtEle","crudOperation","appendNewText","isInput","updateText","getChildNodeObject","toBind","initializeDrag","destroyDrag","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","cursor","getDragEvent","draggedNode","dragCancelAction","dragAction","removeVirtualEle","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","over","dropAction","dropWrap","dropLi","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","appendNode","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","dragIcon","updateChildAriaLevel","sibEle","dragNode","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","dropTar","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","newId","currId","doGivenAction","toExpand","addGivenNodes","dropEle","updateMapper","refNode","navigateUrl","updated","childObj","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","isDoubleTapped","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","secondTap","firstTap","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","newNode","matchedArr","nodesID","editSucess","addSuccess","updatePreviousText","onLoaded","addNodes","disableNodes","enableNodes","ensureVisible","getAllCheckedNodes","getDisabledNodes","getNode","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","mouseMoveEvent","mouseMoveTarget","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","ARROW_TIP","tipClass","ARROW_TIP_OUTER","ARROW_TIP_INNER","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","needTemplateReposition","findTarget","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","renderContent","tooltipContent","enableHtmlParse","isSticky","tipClose","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","TOOLTIP_WRAP","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","ctrlObj","beforeOpenCallback","openAnimation_1","wireMouseEvents","affectedPos","checkCollideTarget","collidedPosition","arrowleft","windowCollision","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","updateHtmlAttribute","labelRippleHandler","ripple","formControlName","textLabel","rippleLabel","ComboBox","preventBlur","targetFocus","customValue","allowCustom","valueMuteChange","setHoverList","inlineSearch","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","highlightSearch","ignoreRegex","findTextNode","revertHighlightSearch","AutoComplete","searchList","suggestionCount","queryElements","filterAction","postBackAction","fieldsSettings","highlight","itemCreated_1","showPopupButton","atcProps","DropDownButtonComponent","immediateRender","NavItem","light","dark","fixed","sticky","Navbar","_classNames","getExpandClass","fluid","Container","containerClass","NavbarToggler","NavbarBrand","handleKeyPress","hoverStart","hoverEnd","handleTouchStart","handleTouchEnd","touchStartX","touchStartY","indicatorClicked","ride","newState","_setInterval","cycleInterval","_clearInterval","_this$props2","keyboard","enableTouch","currentY","carouselItems","_this$props3","outerClasses","innerClasses","onMouseEnter","_carouselItems","_controlLeft","_controlRight","indicators","wrappedIndicators","onClickHandler","controlLeft","controlRight","onTouchEnd","CarouselIndicators","listClasses","indicatorClasses","CarouselCaption","captionHeader","AjaxSettings","columnArray","DetailsViewSettings","NavigationPaneSettings","ToolbarSettings","NavigationPane","moveNames","expandTree","isPathDragged","isRenameParent","isRightClick","renameParent","altEnter","esc","del","ctrlX","ctrlC","ctrlV","ctrlShiftN","shiftF10","onInit","BaseTreeView","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","nodeEditing","onNodeEditing","drawNode","onDrowNode","addDragDrop","dragCursorPosition","dragHelper","getDragPath","getDropPath","addChild","directories","_fm_icon","searchedItems","activeNode","expandNodeTarget","visitedItem","onPathDrag","selectResultNode","onNodeExpanded","onPathChanged","updateTree","updateTreeNode","onOpenEnd","sleId","onOpenInit","onInitialEnd","onFinalizeEnd","onCreateEnd","onSelectedData","updateItemData","onDeleteInit","updateActionData","onDeleteEnd","selcetedEle","selectedNodeEle","onRefreshEnd","onRenameInit","updateRenameData","onRenameEndParent","onRenameEnd","onDownLoadInit","onSelectionChanged","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","onDropPath","onpasteEnd","checkDropPath","onpasteInit","oncutCopyInit","onDropInit","onMenuItemData","onDragging","onDetailsInit","dataobj","menuClass","batchEdit","editIcon","pager","ungroup","excel","fPage","nPage","pPage","ascending","descending","groupHeader","touchPop","defaultItems","disableItems","setLocaleKey","gridID","enableAfterRenderMenu","contextMenu","getMenuItems","contextMenuItemClick","contextMenuBeforeOpen","onOpen","onClose","contextMenuOnClose","menuItems","exportItems","getDefaultItems","buildDefaultItems","exportGroup","getLastPage","totalpage","getKeyFromId","targetColumn","rowInfo","targetRowdata","updateItemStatus","closestGrid","hideSepItems","showSepItems","dItem","ensureDisabledStatus","ensureTarget","ensureFrozenHeader","generateID","menuItem","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","toolbarItemData","toolbarCreateArgs","toolbarCreateHandler","clicked","onClicked","currItems","tool","toolbarClickArgs","sItems","getPupupId","gridSpan","largeIconSpan","layoutBtnObj","hideStatus","refreshLayout","updateSortByButton","itemTooltip","spanElement","onLayoutChange","reRenderToolbar","toHide","DialogComponent","ErrorOption","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","rangeLength","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","clearForm","getInputElement","validClass","elements_2","getErrorElement","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorRule","removeErrorRules","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","errorOption","Message","errorContainer","containerId","customPlacement","checkRequired","inputType","uNum","Label","rowColsPropType","noGutters","sm","xl","colClasses","colSize","isXs","UploaderComponent","TextBoxComponent","CheckBoxComponent","DropDownListComponent","DatePickerComponent","ButtonComponent","GridComponent","ColumnDirective","ColumnsDirective","ForeignKey","initForeignKeyColumns","generateQueryFormData","eventfPromise","dataModule","setColumnData","foreignColumns","genarateColumnQuery","genarateQuery","responses","fromData","needQuery","filteredValue","queryColumn","fColumn","destroyEvent","isAdaptive","excludingItems","preItems_1","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","refreshToolbarItems","updateSearchBox","isNormal","toolbarClickHandler","viewStr","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","searchBoxObj","hasData","getItemObject","toolbarItems_1","itemObject","gID","newArgs","toolbarargs","tarElement","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","CheckBoxSelection","activeLi","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","listCurrentOptions","enableGroupCheckBox","showSelectAll","checkAllParent","selectAllSpan","selectAllHeight","isBlazorListbox","checkboxWrapper","frameElm","selectAllItems","mobFilter","onKeyDown","targetInputElement","refreshListItems","scrollFocusStatus","updateValueState","overAllWrapper","focused","unSelect","selectAllText","unSelectAllText","enableSelectionOrder","activeLiCount","remLi","ulEle","focusAtFirstListItem","AutoCompleteComponent","isImgUploaded","deletedImg","rteID","dialogRenderObj","onWindowResize","showImageQuickToolbar","onToolbarAction","deleteImg","insertImgLink","insertAltText","editAreaClickHandler","alignmentSelect","afterRender","imagePaste","iframeSettings","dragDrop","dragEnter","dragOver","imageClick","editorManager","undoStack","insertImageSettings","onCutHandler","contentElem","resizeBtnInit","imgEle","prevSelectedImgEle","preventDefaultResize","imgResizeDiv","imageResize","getPointY","quickToolObj","imageQTBar","resizeBtnStat","topRight","botLeft","botRight","resizeStartArgs","getDocument","imgResizePos","resizeImgDupPos","imgWid","imgHgt","borWid","devWid","setAspectRatio","expectedX","expectedY","resizeByPercent","percentageValue","pixToPerc","imgDupMouseMove","resizingArgs","getInsertImgMaxWidth","setContentHeight","imgDupPos","fileManagerSettings","openImgLink","editImgLink","removeImgLink","selectParent","selectParentEle","linkUpdate","inputDetails","isCapLink","captionEle","insertElement","selectNodeEle","isCursor","editorMode","nodeSelection","getRange","startContainer","endContainer","startOffset","endOffset","getNodeCollection","isCursor_1","checkImageBack","checkImageDel","getParentNodeCollection","removeResizeEle","setSelectionText","imageRemovePost","isInternal","markdownSelection","getSelectedText","alignImage","inline","imageWithLinkQTBarItemUpdate","toolbarElement","addQTBarItem","quickToolbarModule","isNotify","hideImageQuickToolbar","showOnRightClick","quickToolbarSettings","setSelectionContents","imagDialog","linkWrap","linkTarget","inputLink","linkOpenLabel","checkBoxObj","linkargs_1","selfImage","insertlink","altText","altWrap","altHeader","inputAlt","altArgs_1","insertAlt","isUrl","captionClass","contenteditable","imgInner","imgCaption","imgSizeHeader","dialogContent","imgsizeInput","selectObj_1","insertSize","imgDialog","imgInsert","imglinkCancel","imgHeader","selectObj","dialogModel","insertImageUrl","cancelDialog","removing","isBlur","imgUpload","linkHeader","linkHeaderText","imageUrlPopup","inlineQTBar","getToolbarElement","placeUrl","inputUrl","spellcheck","uploadUrl","matchUrl","imgHeight","imgWidth","imgSizeWrap","widthNum","heightNum","uploadParentEle","deviceImgUpMsg","imgUpMsg","spanMsg","btnEle","autofocus","browserMsg","fileSelect","selectArgs","beforeUploadArgs","uploadEle","allowedTypes","saveFormat","beforeUpload","uploading","failure","actionBeginArgs","effectAllowed","imgElement","isImgOrFileDrop","caretRangeFromPoint","rangeParent","rangeOffset","getDropRange","insertDragImage","startRange","startCharIndexCharacter","rangeRect","activePopupElement","imgFiles","imgType","insertNode","imgArgs_1","validFiles","imageTag","uploadMethod","dragEvent","imageElement","isUploading","canceling","imageUploadingArgs","uploadFailure","uploadSuccess","selectNodeContents","reader_2","showPopupToolBar","imageSrc","createQTBar","ImageToolbar","linkDialog","showLinkQuickToolbar","removeLink","linkQTBar","parentLeft","linkTop","linkLeft","linkPos","tbHeight","getExpandTBarPopHeight","hideLinkQuickToolbar","getAnchorNode","textArea","linkWebAddress","linkDisplayText","linkTooltip","urlPlace","textPlace","linkDialogEle","linkContent","linkUrl","linkText","linkTitle","selectText","linkInsert","linkCancel","selfLink","checkUrl","linkEle","enableAutoUrl","argsValue","Legend","mouseMove","mouseEnd","highlightModule","getLegendOptions","visibleSeriesCollection","visibleSeriesCollection_1","pointColorMapping","interior","legendShape","sourceIndex","trendlines","legendImageUrl","rangeMap","extraHeight","extraWidth","verticalArrowSpace","titleSpace","legendEventArgs","columnHeight","titlePlusArrowSpace","prevLegend","previousBound","availwidth","LegendClick","legendClickArgs","legendText","changeSeriesVisiblity","refreshLegendToggle","legendSelection","points_1","selectedDataIndexes","animateSeries","rotatedDataLabelCollections","redrawSeriesElements","removeSvg","refreshAxis","refreshAxisLabel","refreshSeries","markerRender","removeHighlightedMarker","refreshBound","redrawSelection","isSecondaryAxis","seriesCollection_1","legendRegion","legendItemsId_1","checkWithinBounds","cRender","canvasRect","DataLabel","errorHeight","initPrivateVariables","shapeElement","commonId","calculateErrorHeight","chartBackground","chartArea","positiveHeight","errorBarModule","negativeHeight","rgbValue","contrast","labelLocation","yAxisInversed","rectCenterX","rectCenterY","isDataLabelOverlap","showZero","emptyPointSettings","labelLength","xPos","yPos","shapeRect","argsFont","symbolLocations","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","chartAxisLayoutPanel","visibleAxisLabelRect","rectRegion","actualRect","enableRotation","rectCoordinates","getRectanglePoints","isDataLabelOverlapWithChartBound","currentPointIndex","isShape","vAxis","hAxis","doDataLabelAnimation","labelRegion","getLabelLocation","locationY","alignmentValue","calculateAlignment","calculateRectPosition","locationX","calculatePathPosition","calculatePolarRectPosition","columnRadius","chartWidth","alignmentSign","textLength","extraSpace","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","animated","SeriesDirective","SeriesCollectionDirective","RadioButtonComponent","_extensionConfig","_analyticsPlugin","addHistoryListener","pageViewTelemetry","trackPageView","trackMetric","metric","customProperties","pageView","reactPlugin","_mountTimestamp","_firstActiveTimestamp","_idleStartTimestamp","_lastActiveTimestamp","_totalIdleTime","_idleCount","_idleTimeout","trackActivity","lastIdleTime","_intervalId","metricData","getEngagementTimeSeconds","sampleCount","additionalProperties","onScroll","onTouchMove","NumericTextBoxComponent","AggregateDirective","AggregatesDirective","AggregateColumnDirective","AggregateColumnsDirective","TooltipComponent","showColumn","hideColumn","changedColumns","unchangedColumns","isDlgOpen","initialOpenDlg","stateChangeColumns","isInitialOpen","isCustomizeOpenCC","searchOperator","prevShowedCols","hideDialogFunction","hideDialog","dlgObj","rtlUpdate","enableAfterRenderEle","onResetColumns","renderDlgContent","clearActions","refreshCheckboxState","columnChooserSearch","removeCancelIcon","refreshCheckboxButton","targetdlg","hideOpenedDialog","addcancelIcon","beforeOpenColumnChooserEvent","mOpenDlg","dialog","renderChooserList","updateIntermediateBtn","customDialogOpen","customDialogClose","columnChooserManualSearch","dlgDiv","confirmDlgBtnClick","clearBtnClick","mainDiv","searchDiv","ccsearchele","ccsearchicon","conDiv","innerDivContent","refreshCheckboxList","changedColumnState","uncheckedLength","columnStateChange","resetColumnState","currentCol","stateColumns","checkstatecolumn","coluid","searchVal","fltrCol","clearSearch","buttonEle","selectedCbox","columnChooserSettings","nMatchele","checkBoxClickHandler","checkstate","updateSelectAll","visibleCols","columnUID","srchShowCols","searchData","itemsLen","hideCols","gdCol","cclist","renderCheckbox","currentCheckBoxColls","itemLen","uncheck","cbox","hideColState","showColState","cccheckboxlist","searchValue","startTimer","openCC","dlgEle","dlgLen","processContext","initPlugins","lastPlugin","extA","extB","bHasProcess","_arrForEach","_objDefineAccessors","_addChannelQueue","channelQueues","queueItem","_checkQueuePriority","StorageType","FieldType","DistributedTracingModes","_channelQueue","queues","getChannelControls","isCookieUseDisabled","channelQueue","channels","_createChannelQueues","initializePlugins","_staticInit","ChannelController","BaseTelemetryPlugin","_isInitialized","_extensions","_channelController","_setInit","_eventQueue","notificationManager","instrumentationKey","channelController","addNotificationListener","removeNotificationListener","eventsSent","eventsDiscarded","_notificationManager","NotificationManager","allExtensions","sortPlugins","coreExtensions","channelExtensions","extPriorities","extPriority","getTransmissionControls","telemetryItem","ver","thePlugins","EventsDiscardedReason","_notifyInvalidEvent","_validateTelemetryItem","pollInternalLogs","diagnosticLogInterval","baseType","baseData","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","sanitizeKeyAndAddUniqueness","origLength","DataSanitizer","sanitizeKey","uniqueField","MAX_NAME_LENGTH","padNumber","nameTrunc","sanitizeString","valueTrunc","MAX_STRING_LENGTH","sanitizeUrl","sanitizeInput","MAX_URL_LENGTH","sanitizeMessage","messageTrunc","MAX_MESSAGE_LENGTH","sanitizeException","exceptionTrunc","MAX_EXCEPTION_LENGTH","sanitizeProperties","tempProps","MAX_PROPERTY_LENGTH","sanitizeMeasurements","measurements","tempMeasurements","sanitizeId","MAX_ID_LENGTH","_msgId","inputTrunc","_uaDisallowsSameSiteNone","DataPointType","createDomEvent","disableStorage","Util","_canUseLocalStorage","_canUseSessionStorage","_getLocalStorageObject","canUseLocalStorage","_getVerifiedStorageObject","LocalStorage","storageType","storage","isInternalApplicationInsightsEndpoint","endpointUrl","_internalEndpoints","getStorage","getExceptionName","dump","setStorage","removeStorage","_getSessionStorageObject","canUseSessionStorage","SessionStorage","getSessionStorageKeys","getSessionStorage","setSessionStorage","removeSessionStorage","canUseCookies","cookie","disallowsSameSiteNone","_endsWith","setCookie","domainAttrib","secureAttrib","stringToBoolOrDefault","getCookie","cookieName","deleteCookie","random32","generateW3CId","hexValues","oct","clockSequenceHi","isError","getIEVersion","userAgentStr","myNav","msToTimeSpan","totalms","sec","isCrossOriginError","columnNumber","objectTypeDump","propertyValueDump","IsBeaconApiSupported","sendBeacon","getExtension","extIx","NotSpecified","toISOStringForIE8","parseUrl","UrlHelper","htmlAnchorElement","parseHost","getAbsoluteUrl","getPathName","getCompleteUrl","absoluteUrl","canIncludeCorrelationHeader","requestUrl","currentHost","disableCorrelationHeaders","requestHost","enableCorsCorrelation","includedDomains","correlationHeaderDomains","excludedDomains","correlationHeaderExcludedDomains","getCorrelationContext","responseHeader","correlationId","CorrelationIdHelper","getCorrelationContextValue","RequestHeaders","correlationIdPrefix","keyValues","ParseDependencyPath","commandName","parsedUrl","pathName","Now","perf","timing","navigationStart","GetDuration","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","DEFAULT_BREEZE_ENDPOINT","connectionString","kvPairs","ConnectionStringParser","_FIELDS_SEPARATOR","kv","kvParts","_FIELD_KEY_VALUE_SEPARATOR","endpointsuffix","locationPrefix","ingestionendpoint","aiDataContract","Required","sampleRate","Hidden","Domain","Default","envelopeType","hasFullStack","parsedStack","severityLevel","exceptions","problemGroup","Exception","CreateFromInterface","toInterface","CreateSimpleException","typeName","assembly","outerId","_ExceptionDetails","parseStack","totalSizeInBytes","parsedFrame","sizeInBytes","acceptedLeft","acceptedRight","howMany","ExceptionDetails","sourceFrame","_StackFrame","baseSize","StackFrame","SeverityLevel","stdDev","Measurement","dataPoint","Metric","durationMs","PageView","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","configValue","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationName","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","envelopeName","systemProperties","UserExt","DeviceExt","TraceExt","WebExt","AppExt","OSExt","SessionExt","SDKExt","CtxTagKeys","ContextTagKeys","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","_objGetPrototypeOf","_dynamicNames","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","_isDynamicCandidate","funcName","skipOwn","_throwTypeError","_hasVisited","_getObjName","unknownValue","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","instFuncs","_getInstanceFuncs","_instFuncProxy","theFunc","baseFuncs","baseProto","visited","_getBaseFuncs","baseInstFuncs","_createDynamicPrototype","dynProtoProxy","instFunc","protoFunc","instFuncTable","_populatePrototype","PageVisitData","_dispatchEvent","evnt","_buffer","enqueue","batchPayloads","emitLineDelimitedJson","markAsSent","clearSent","_bufferFullMessageSent","_logger","bufferItems","SessionStorageSendBuffer","BUFFER_KEY","notDeliveredItems","SENT_BUFFER_KEY","MAX_BUFFER_SIZE","setBuffer","removePayloadsFromBuffer","sentElements","payloads","prefixedKey","namePrefix","bufferJson","extractPropsAndMeasurements","createEnvelope","envelope","iKeyNoDashes","EnvelopeCreator","extractPartAExtensions","user","authId","localId","app","sesId","deviceClass","ip","web","browserLang","browserVer","screenRes","userConsent","traceID","tgs","Version","Create","customMeasurements","responseCode","DependencyEnvelopeCreator","EventEnvelopeCreator","ExceptionEnvelopeCreator","MetricEnvelopeCreator","currentContextId","refUri","pageType","isLoggedIn","pageTags","PageViewEnvelopeCreator","PageViewPerformanceEnvelopeCreator","TraceEnvelopeCreator","serialize","_serializeObject","_serializeStringMap","_serializeArray","contract","sources","expectedType","Offline","_onlineStatus","_window","_document","isListening","_setOnline","_setOffline","ononline","onoffline","isOnline","_navigator","onLine","OfflineListener","getHashCodeScore","getHashCode","HashCodeScoreGenerator","INT_MAX_VALUE","MIN_INPUT_LENGTH","hashCodeGeneragor","getSamplingScore","telemetryTrace","samplingRate","samplingScoreGenerator","isSampledIn","samplingPercentage","_XMLHttpRequestSupported","constructEnvelope","orig","_getDefaultAppInsightsChannelConfig","maxBatchInterval","maxBatchSizeInBytes","disableTelemetry","enableSessionStorageBuffer","isRetryDisabled","isBeaconApiDisabled","onunloadDisableBeacon","_getEmptyAppInsightsChannelConfig","triggerSend","onunloadFlush","_senderConfig","_beaconSender","teardown","_serializer","_consecutiveErrors","_retryAt","_lastSend","_sender","defaultConfig","Sender","ArraySendBuffer","_sample","_xhrSender","XDomainRequest","_xdrSender","_isSampledIn","bufferPayload","_setupTimer","_xhrReadyStateChange","countOfItemsInPayload","_appId","_parseResponse","appId","_isRetriable","_resendPayload","_onError","_formatErrorMessageXhr","_onPartialSuccess","_onSuccess","forcedSender","_timeoutHandle","failed","itemsAccepted","itemsReceived","_xdrOnLoad","xdr","_formatErrorMessageXdr","isAsync","plainTextBatch","endPointUrl","linearFactor","_setRetryTime","delayInSeconds","backOffSlot","backOffDelay","retryAfterTimeSpan","retryInterval","timerValue","hostingProtocol","sessionExpirationMs","_SessionManager","sessionRenewalMs","_storageNamePrefix","cookieNameConst","automaticSession","Session","initializeAutomaticSession","acquisitionExpired","acquisitionDate","renewalExpired","renewalDate","renew","cookieUpdatedTimestamp","cookieUpdateInterval","backup","initializeAutomaticSessionWithData","sessionData","acq","renewal","acquisitionExpiry","renewalExpiry","cookieExpiry","cookieDomnain","cookieDomain","UTCString","acquisitionSpan","renewalSpan","sdkVersion","sdkExtension","isNewUser","User","userCookieName","cookieSeparator","acqStr","accountAcquisitionDate","newCookie","accountId","authCookie","authUserCookieName","authCookieString","authenticatedId","setAuthenticatedUserContext","authenticatedUserId","storeInCookie","validateUserInput","clearAuthenticatedUserContext","sessionManager","application","Application","Device","internal","Internal","session","applySessionContext","sessionContext","applyOperatingSystemContxt","applyApplicationContext","applyDeviceContext","applyInternalContext","agentVersion","applyLocationContext","applyOperationContext","applyWebContext","applyUserContext","cleanUp","Extensions","getDefaultConfig","isBrowserLinkTrackingEnabled","PropertiesPlugin","_breezeChannel","_processTelemetryInternal","cbNames","_arrLoop","_doCallbacks","callDetails","cbArgs","hookCtx","hook","cbks","orgEx","hookErrorCb","checkPrototype","owner","_getOwner","newFunc","aiHook","funcThis","orgArgs","funcArgs","_replaceArg","_createArgs","theArgs","rslt","theHook","rm","_objKeys","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","XHRMonitoringState","ajaxData","dependency","_markCount","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","_indexOf","InstrumentFunc","Formatter","saveSelection","getRangeAt","getAncestorNode","commonAncestorContainer","action_1","itemCollection","CONSTANT","isTableModule","tableModule","ensureInsideTableList","clipboardAction","enableUndo","onKeyHandler","callbackArgs","setPlaceHolder","autoResize","undoRedoManager","getUndoStatus","undoRedoStack","quickTBarObj","IMAGE","BLOCK_TAGS","IGNORE_BLOCK_TAGS","TABLE_BLOCK_TAGS","NodeSelection","startNodeName","endNodeName","saveInstance","cloneRange","documentFromRange","getNodeArray","isChildNode","nodeCollection","getParentNodes","getSelectionNodeCollection","getSelectionNodes","getSelectionNodeCollectionBr","getSelectionNodesBr","regEx","getInsertNodeCollection","getInsertNodes","isStart","setRangePoint","isvalid","constant","setSelectionNode","getSelectedNodes","insertParentNode","surroundContents","setCursorPoint","htmlKeyConfig","selfClosingTags","markerClassName","DOMNode","currentDocument","isBlockNode","isLink","blockParentNode","rawAttributes","rawAttr","orderRawAttr","attrKey","attrValue","clearAttributes","openTagString","closeTagString","createTagString","isList","replaceWith","parseHTMLFragment","referenceNode","wrapInner","unWrap","unWrapNode","getSelectedNode","TEXT_NODE","nodeFinds","existNodes","isEditorArea","getRangePoint","ranges","getPreviousNode","saveMarker","startTextNode","endTextNode","setMarker","existNode","textNodes","ensureSelfClosingTag","isTable","parNode","tdNode","lastNode","createTempNode","getImageTagInSelection","blockNodes","collectionNodes","ignoreTableTag","listNodes","Lists","domNode","applyListsHandler","spaceKeyAction","testList","olListRegex","elementStart","testCurrentList","olListStartRegex","spaceList","nextElement","preElemULStart","nextElemULStart","startElementOLTest","preElementOLTest","nextElementOLTest","enterList","startNodeParent","nearBlockNode","nodeCutter","GetSpliceNode","paraTag","backspaceList","parentList","commonAncestor","startEle","endEle","collapsed","isNested","ignoreDefault","currentAction","getAction","revertList","revertClean","nestedList","cleanNode","prevSibling","noPreviousElement","firstNodeOL","siblingListOL","siblingListLI","siblingListLIFirst","nestedElement","nestedElementLI","firstNodeLI","listsNodes","applyLists","isRevert","removeEmptyListElements","checkLists","listStyle","listImage","openTag","closeTag","newTag","replaceHTML","collectionString","listElem","nodesTemp","liParents","contentNodes","findUnSelected","rightIndent","indentElements","childElements","childLI","viewNode","nodeInnerHtml","emptyUl","emptyLi","InsertMethods","WrapBefore","AppendBefore","Wrap","unwrap","NodeCutter","SplitNode","setStartBefore","setEndAfter","fragment","extractContents","spliceEmptyNode","isImgElm","GetCursorStart","GetCursorRange","cursorRange","TrimLineBreak","GetCursorNode","Formats","applyFormats","endCon","pTag","brNode","startCon","preElem","endPreElem","deleteContent","removeCodeContent","lastEmpty","lastBeforeBr","startParent","paraFocus","isNotEndCursor","pointer","deleteContents","referNode","isEnd","insertMarker","brTag","previousSib","setCursorPosition","markerElem","mrkParentElem","focusSelectionParent","brElm","tempSpanPElem","tempSpan","isSelectAll","formatsNodes","exeValue","cleanFormats","replaceNode","replaceTag","preFormatMerge","preNodes","ignoreAttr","InsertHtml","Insert","editNode","isExternal","closestParentNode","closestEle","pasteInsertHTML","sibNode","lasNode","removeEmptyElements","previousNode","imageFocus","paraElem","isSingleNode","currentBlockNode","getImmediateBlockNode","containsBlockNode","removingComments","lastSelectionNode","allChildNodes","insertTempNode","isFirstTextNode","firstParaElm","nearestAnchor","immediateBlockNode","placeCursorEnd","cursorPos","blockNode","splitedElm","elm","innerElement","findDetachEmptyElem","detachableElement","LinkCommand","linkCommand","createLink","closestAnchor","createAchorNode","removeText","createLinkNode","currentNode","domSelection","txtArray","inlineNodes","anchorNodes","finalinlineNodes","linkNode","containsNode","Alignments","getTableNode","isTableAlign","alignmentNodes","imageTags","elementNode","imgObj","imageCommand","Indents","indentValue","applyIndents","editEle","indentsNodes","parentNodes","marginLeftOrRight","indentsValue","CLASS_CAPTION","ImageCommand","createImage","insertImageLink","openImageLink","editImageLink","removeImageLink","removeImage","insertAltTextImage","imageDimension","imageJustifyLeft","imageJustifyCenter","imageJustifyRight","imageInline","imageBreak","isReplaced","imgElm_1","preventLoadCall_1","calculateStyleValue","capImgWrap","TableCommand","insertRow","insertColumn","deleteColumn","removeTable","tableHeader","tableVerticalAlign","cellMerge","HorizontalSplit","VerticalSplit","tableMove","tblBody","tdWid","removeEmptyNode","emptyPara","emptyLiChild","getSelectedCellMinMaxIndex","curTable","minI","maxI","minJ","maxJ","selectedCellIndex","getCorrespondingIndex","minMaxIndex","FindIndex","endRow","isBelow","cloneRow","allCells","getCorrespondingColumns","newRow","isHeaderSelect","tdElement","curCell","curRow","allRows","currentWidth","currentTabElm","thTdElm","oldWidth","colTemplate","tBodyHeadEle","deleteIndex","selectedMinMaxIndex","minCol","maxCol","colSpanVal","rowHeadEle","nextFocusCell","sContainer","startChildLength","rowSpanVal","focusTrEle","selectedTable","headerExit","cellCount","colSpanCount","createTHead","deleteTHead","tableCell","mergeCellContent","minMaxIndexes","getSelectedMinMaxIndexes","firstCell","rowSelectedCells","updateRowSpanStyle","updateColSpanStyle","colValue","colMin","eleArray","updateCellAttribute","rowValue","rowMin","correspondingCells","minRow","maxRow","currentRowCol","targetRowCol","activeCell","newCell","activeCellIndex","activeCellRowSpan","avgCount","avgRowIndex","newTrEle","correspondingColumns","activeCellcolSpan","colEle","colspan_1","nextCol","highlightCells","minRowIndex","maxRowIndex","minColIndex","maxColIndex","minMaxValues","MinMax","activeCellTag","targetCellTag","activeRowIndex","activeColumnIndex","targetRowIndex","targetColumnIndex","activeCellList","activeIndexes","targetIndexes","IsFormatted","getFormattedNode","getFormatParent","isFormattedNode","isUnderline","isStrikethrough","isSuperscript","isSubscript","isFontColor","isFontName","isFontSize","isBackgroundColor","inlineTags","textDecoration","SelectionCommands","applyFormat","preventRestore","isFormatted","isFontStyle","cursorNode","insertCursorNode","isSubSup","formatNode","insertFormat","removeFormat","applySelection","cursorNodes","cursorFormat","getCursorFormat","getInsertNode","bgStyle","splitNode","formatNodeStyles","formatNodeTagName","nodeTraverse","GetFormatNode","currentNodeElem","curParentElem","applyStyles","getChildNode","SelectionBasedExec","InsertHtmlExec","applyHtml","pastedElements","allPastedElements","imgElements","allImgElm","imgElem","ClearFormat","lastText","exactNodes","cloneSelectNodes","clearInlines","reSelection","cloneParentNodes","clearBlocks","selectionNodes","endIndexNode","spliceParent","removeParent","elementIndex","NONVALID_TAGS","NONVALID_PARENT_TAGS","IGNORE_PARENT_TAGS","removeInlineParent","ClearFormatExec","applyClear","UndoRedoManager","undoRedoSteps","undoRedoTimer","onAction","redo","changEle","removedContent","MsWordPaste","olData","ulData","ignorableNodes","borderStyle","removableElements","listContents","wordCleanup","wordPasteStyleConfig","allowedStylePropertiesArray","tempHTMLContent","rtfData","pattern4","imageConversion","addListClass","listConverter","styleCorrection","removeUnwantedElements","breakLineAddition","removeClassName","addTableBorderClass","allNodes","allTableElm","hasTableBorder","checkVShape","imgSrc","base64Src","imgName","linkRegex","hexValue","hexConversion","convertToBase64","byteArr","conHexStringToBytes","conBytesToBase64","base64Str","byteArrLen","array3","array3length","array4","picHead","fullImg","elmWithClass","allElements","findDetachElem","brElement","regExpStartElem","regExpEndElem","styleElement","styleClassObject_1","findStyleObject","removeUnwantedStyle","filterStyles","resultElem","fromClass","styleProperty","valueSplit","changedValue","elmWithStyles","elemStyleProperty","styleValue","styleValues","styleClassObject","tempStyle","classNameCollection","stylesCollection","prevflagState","tempCleaner","stNode","currentListStyle","getListContent","currentClassName","listType","nestedLevel","makeConversion","elemColl","temp1","prevList","pLevel","listCount","getListStyle","getNamedItem","currentStyle","pushContent","styleNodes","InsertTextExec","insertText","EditorManager","listObj","formatObj","alignmentObj","indentsObj","linkObj","selectionObj","inserthtmlObj","insertTextObj","clearObj","tableObj","msWordPaste","editorKeyDown","editorKeyUp","onWordPaste","onBegin","HTMLFormatter","updateFormatter","editElement","statusCollection","ToolbarStatus","targetNode","documentNode","formatCollection","nodesLength","isNodeChanged","isOrderedList","isUnorderedList","isAlignment","isFormats","isNumberFormatList","isBulletFormatList","listStyleType","HtmlToolbarStatus","toolbarStatus","prevToolbarStatus","onRefreshHandler","tbStatusString","markdown","rteContent","IframeContentRender","iFrameContent","contentDocument","setThemeColor","XhtmlValidation","enableXhtmlValidation","enableXhtml","AddRootElement","ImageTags","RemoveUnsupported","selfEncloseValidation","arrayValue","valueTemp","valueDupe","valueOriginal","imgRegexp","imgNodes","RemoveElementNode","rmvNode","parentArray","rmvArray","underlineEle","strongEle","boldEle","RemoveAttributeByName","attrName","childEle","HtmlEditor","rangeCollection","nodeSelectionObj","colorPickerModule","onToolbarClick","onSelectionSave","onSelectionRestore","updateReadOnly","onPaste","currentRange","backSpaceCleanup","deleteCleanup","enableTabKey","textCont","spaceLink","currentRange_1","editorValue","orderedList_1","unOrderedList","isUnOrderedList","rangeElement","oldRangeElement","deleteRangeElement","deleteOldRangeElement","ulListStartRegex","isLiElement","getRootBlockNode","getRangeLiNode","getRangeElement","getCaretIndex","preCaretRange","rangeBlockNode","rangeLiNode","isWordPaste","httpRegex","wwwRegex","enterSplitText","contentInnerElem","contentWithSpace","spaceBetweenContent","spaceSplit","divElement","splitTextContent","resultSplitContent","pasteCleanupModule","splitText","urlText","urlTextRange","closestElement","imageDialog","formatterClass","toolbarUpdate","InlineEditRender","addNew","mTbody","frTbody","isVirtualFrozen","isScroll","frTbody_1","getEditElement","checkLastRow","renderMovableform","frEle","renderFrozenRightForm","frozenRightForm","renderRightFrozen","movableForm","updateFreezeEdit","getFreezeRow","getFreezeRightRow","isCustomFormValidation","refreshFreezeEdit","fCls","mTd","frTd","refreshEditForm","updateFrozenCont","updateFrozenRightCont","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialogHeader","responsiveDlgRenderer","getDialogEditTemplateElement","dialogEditTemplates","dialogTemp","tempDiv","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","fForm","frForm","cols_1","mTdElement","fTdElement","rowID","tArgs","tempData","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","selectChkBox","editRow","cbChange","DropDownEditCell","isInline","ddCreated","dropdownCreated","ddOpen","dropDownOpen","ddBeforeOpen","dropdownBeforeOpen","ddComplete","ddActionComplete","dlgElement","NumericEditCell","DefaultEditCell","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","primaryKeys","primaryKeyValues","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","getCurrentEditedData","mhdrFrm","mCntFrm","mvblEle","frHdrFrm","frCntFrm","eleLength","endEditArgs","destroyElements","destroyWidgets","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","closeForm","originalRow","cloneFrozen","frozen","needRefresh","closeEditArgs","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","onBeforeCellFocused","batchCancelFunction","setCellIdx","isAddRow","validateFormObj","frzRightCols","editCellFromIndex","batchChanges","isAdded","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","removeHideAndSelection","tdElements","bulkDelete","bulkAddRow","batchSave","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","out_j_1","dataObjects","getIndexFromData","getDefaultData","beforeBatchAddArgs","removeFrozenTbody","renderFrozenAddRow","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","validation","checkNPCell","dValues","editCellExtend","mRowData","getDataByIndex","getCellIdx","cellEditArgs","isColored","newReactTd","setChanges","currentRowObj","movableRowObject","frRowObject","rowcell","escapeCellEdit","generateCellArgs","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","visibleColumns","addCancelWhilePaging","DialogEdit","DatePickerEditCell","dateanddatetimerender","DateTimePicker","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","refreshToolbar","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","destroyEditComponents","eventDetails","inputs","col_1","isRestrict","isDestroyVirtualForm","formObjects","virtualFormObj","preventObj","mForm","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","customForm","gcontent","validationForBottomRowPos","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHeraderRows","client","inputClient","arrow","rowsHeight","AddEditors","editors","isMetaKey","ViewSource","updateSourceCode","getSourceCode","previewKeyDown","previewElement","wireBaseKeyDown","unWireBaseKeyDown","targetItem","getBaseToolbarObject","updateValueData","getTextAreaValue","disableToolbarItem","enableToolbarItem","invokeChangeEvent","editHTML","getViewPanel","executeGroup","ExecCommandCallBack","commandCallBack","ImageSettings","FileManagerSettings","folder","FileToolbarSettings","autoClose","TableSettings","QuickToolbarSettings","PasteCleanupSettings","FontFamily","FontSize","Format","FontColor","BackgroundColor","NumberFormatList","BulletFormatList","Resources","IFrameSettings","InlineMode","rte","isFrame","setReadOnly","valueContainer","FullScreen","showFullScreen","hideQuickToolbars","scrollableParent","evenArgs","beginEventArgs","enableFloating","toggleParentOverflow","removeFixedTBarClass","hideFullScreen","addFixedTBarClass","DialogRenderer","RichTextEditor","defaultResetValue","isResizeInitialized","isFocusOut","isRTE","showCharCount","updateEnable","blurHandler","onFocusHandler","onResizeHandler","clickPoints","setContainer","originalElement","rteOuterWrapper","executeCommand","htmlPurifier","htmlEditorModule","imageValue","linkValue","sourceCodeModule","RTERender","getXhtml","restrict","removeNodeArray","placeHolderWrapper","allowedKeys","sanitizeHtml","triggerEditArea","touch","notifyMouseUp","touchData","prevClientX","prevClientY","closestTable","onCopy","onCut","pasteArgs","htmlValue","timeInterval","allClassName","removeHtmlAttributes","wrapperElm","selectedHtml","cloneContents","showInlineToolbar","targetElm","showInlineQTBar","hideInlineToolbar","hideInlineQTBar","nVal","updatePanelValue","countModule","refreshToolbarOverflow","frameSetting","scripts","removeSheets","setIframeSettings","renderCount","wireContextEvent","unWireContextEvent","srcList","getTextArea","editPanel","unbindEvents","printArgs","printingArgs","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","createStyleElement","rel","compiledTemplate","updateResizeFlag","editEleMaxWidth","imgPadding","heightValue","rteHeightPercent","heightPercent","cntEle","rteHeight","getToolbarHeight","rzHandle","rzHeight","expandPopHeight","codeElement","tbWrapHeight","getHtml","showSourceCode","getCharCount","htmlText","InsertLink","InsertImage","InsertTable","getBaseToolbar","getInlineBaseToolbar","preventImgResize","defaultResize","contentScrollHandler","cloneValue","saveInterval","autoSaveOnIdle","updateValueOnIdle","getUpdatedValue","removeResizeElement","updateIntervalValue","idleInterval","status_1","rteElement","trg","wireScrollElementsEvents","scrollParentElements","contextHandler","EJ2Touch","unWireScrollElementsEvents","closestElem","onSelection","setAutoHeight","iframeElement_1","arrayKey","RichTextEditorComponent","FilterCellRenderer","fltrData","filterBarTemplate","operatorIconRender","templateWrite","fbicon","operators","dropOptr","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","StringFilterUI","serLocator","actObj","getAutoCompleteOptions","foreignColumnQuery","autoComplete","localizeText","acFocus","acComplete","acOpen","openPopup","filterOptr","actuiObj","enableCaseSensitivity","getOptrInstance","mapObj","NumberFilterUI","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","drpuiObj","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","filterBtnClick","renderFilterUI","writeMethod","renderFlValueUI","menuOperator","valueDiv","instanceofFilterUI","compElement","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","flIcon","renderCheckBoxMenu","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","ExcelFilterBase","childRefs","getCMenuDS","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","isCMenuOpen","cmenu","submenu","selectedMenu","menuOptions","selectHandler","preventClose","contextRect","getContextBounds","getCMenuYPosition","isFilterBack","MouseEvent","contextWidth","targetBorder","filterLength","renderDialogue","overlayClick","createdDialog","rowResponsiveDlg","removeObjects","renderCustomFilter","dlgFields","fieldSet","checkBoxValue","fOperator","sValue","sOperator","firstOperator","firstValue","secondOperator","secondValue","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","renderRadioButton","radioDiv","frstpredicate","secndpredicate","renderMatchCase","andRadio","orRadio","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","datePicker","dateTimePicker","completeAction","numericTextBox","acActionComplete","columnvalue","ExcelFilter","excelFilterBase","filterByMethod","cellText","nextFlMenuOpen","fltrDlgDetails","skipNumberInput","skipStringInput","getLocalizedCustomOperators","fltrElem","rowdrag","updateFilterMsg","dropdownlist","filterBarElement","filterObjIndex","getFilteredColsIndexByField","prevFilterObject","arrayVal","currentFilterObject","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","docClickHandler","refreshClearIcon","columnMenuFilter","filterIconClickHandler","targetText","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","updateFilterIcon","refreshFilterSettings","updateFilter","getFilterBarElement","fltrIconElement","filteredcols","fltrElement","filterDialogOpen","filterHandler","localizedStrings","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","updateCrossIcon","getFormatFlValue","showFilterBarStatus","isSkip","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","booleanOperator","inputId","datepickerEle","hasDialog","hasDialogClosed","filterIconElement","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","CartesianAxisLayoutPanel","chartModule","measureAxis","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","calculateRowSize","arrangeAxis","measureDefinition","calculateColumnSize","definition","scrollBarModule","zoomModule","enableScrollbar","enableScrollbarOnZooming","isZoomed","axisOffset","nearCount","farCount","plotOffset","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","actualIndex","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","position2","crossesAt","crossesInAxis","updateCrossAt","primaryYAxis","dateFormatter","labels","axisCollection","actualLength","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","axisElement","axisLineElement","findAxisPosition","drawAxisLine","majorGridLines","drawXAxisGridLine","drawXAxisLabels","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","isScrollUI","optionsLine","definitionName","plotX","plotY","minorGridDirection","isLogAxis","isCategoryAxis","pointY","majorGrid","majorTick","tickSize","axisLineSize","ticksbwtLabel","labelPlacement","isTickInside","chartThemeStyle","minorGridLines","minorTickLines","isBorder","renderGridLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","isAxisBreakLabel","labelSpace","isLabelInside","isOpposed","defaultAnchor","maxLineWidth","labelElement","getAxisLabelXvalue","getAnchor","createZoomingLabel","lineBreakAlignment","gap","endY","labelBorder","endX","createAxisBorderElement","renderYAxisMultiLevelLabels","minorDirection","isFirstLabel","logStart","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","labelHeight","labelWidth","intervalLength","islabelInside","tickSpace","newPoints","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","xValue2","rect_1","xAdjustment","yAdjustment","findAxisLabel","axisRect","renderXAxisMultiLevelLabels","borderElement","gridDirection","gridId","gridIndex","themeColor","findParentNode","zoomElement","DataLabelSettings","MarkerSettings","Points","percentage","isPointInRange","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","isRectTypeSeries","processJsonData","xName","Series","textMappingName","processInternalData","yName","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","pushCategoryData","pushData","setEmptyPoint","isArea","isRange","findSplinePoint","calculateBinValues","getObjectValueByMappingString","enableComplexProperty","getObjectValue","volume","tooltipMappingName","isAdvancedColorSupported","colorValue","getPointFillColor","pointFill","mappingName","findVisibility","yData","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","isRemoteData","localData","findCurrentData","refreshChart","refreshTechnicalIndicator","stockChartDataManagerSuccess","drawPoints","lowDrawPoints","delayedAnimation","findSeriesCollection","isStack","rowSeries","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","stackingGroup","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","stackingSeies","isColumnBarType","findPercentageOfStacking","stackingSeies_1","seriesCollection_2","renderSeries","createSeriesElements","appendSeriesElement","seriesElements","performAnimation","explodeValue","svgRenderer","markerMaxValue","clipRectElement","symbolElement","seriesElement","errorBarElement","dataLabelElements","doAnimation","doErrorBarAnimation","doMarkerAnimation","setPointColor","setBorderColor","dataQuery","dataManagerDeferred_1","MarkerExplode","crosshair","markerMove","startMove","explodeSeries","pointData","commonXvalues","chartSeries","enableTooltip","isPointMouseDown","markerExplode","drawTrackBall","seriesMarker","generateStyle","symbolId","selectionId","seletionElem","Marker","renderMarker","previousLocation","previousPath","circlePath","markerElement","isBoxPlot","markerFill","markerBorder","markerOpacity","imageURL","markerClipRect","getRangeLowPoint","markerElements","incFactor","lowPoint","TechnicalIndicator","targetSeries","ExportUtils","htmlContent","getHTMLContent","export","controls","controlValue","getControlsValue","isDownload","svgData","XMLSerializer","serializeToString","msSaveOrOpenBlob","triggerDownload","canvas","toDataURL","exportPdf","doexport","image_1","ctx_1","toBlob","getDataUrl","image_2","ctx_2","blobUrl","groupEle","pdfDefaultWidth","pdfDefaultHeight","imageString","exactWidth","exactHeight","pdfHeader","pdfFooter","exportImage","buffers","image1","byteString","intArray","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","checkResize","clickCount","singleClickTimer","chartid","mergePersistChartData","isIdHasSpecialCharacter","numberRegex","childElementId","refreshDefinition","tooltipModule","svgId","loadEventData","cartesianChartRendering","beforeRenderData","createChartSvg","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","legendModule","calculateStackValues","rangeFound","enablePeriodSelector","enableSelector","renderElements","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","applyZoomkit","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","mainObject","svgRect","initializeModuleElements","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","renderCanvasSeries","seriesSvg","mainElement","indicator","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","applyZoomToolkit","annotationModule","renderAnnotations","invokeSelection","invokeHighlight","initializeDataModule","techIndicator","subTitleHeight","subTitleCollection","subTitle","titleText","subTitleStyle","stockLegendModule","trendIndex","trendLine","initSeriesCollection","yAxisName","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","seriesName","palettes","zOrder","initSeries","renderSubTitle","subTitleElementSize","subTitleOptions","backGroundImage","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","stopEvent","chartOnMouseDown","chartOnMouseClick","chartRightClick","resizeBound","touchObject","chartResize","longPressBound","longPress","crosshairModule","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","setMouseXY","exportModule","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","touchArg","chartOnMouseMove","chartOnMouseLeave","isChartDrag","triggerPointEvent","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","titleTooltip","axisTooltip","dataEditingModule","pointMouseMove","texts","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableMouseWheelZooming","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","trendline","striplines","striplines_1","removeLength","pinchTarget","containerCollection","definitions","definitions_1","axisChange","getVisibleSeries","visibleSeries_1","refreshLiveData","removeStyles","refreshBounds","crosshairTooltip","seriesRefresh","blazorProp","boxPlotMode","showMean","currentMode","styleId","ChartComponent","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_H_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","PaneProperties","Splitter","allPanes","paneOrder","separatorOrder","allBars","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","collapseFlag","expandFlag","setSplitterSize","setReversePane","setSeparatorSize","separatorSize","paneSettings","destroyPaneSettings","createSplitPane","addSeparator","getPanesDimensions","paneCounts","changedPropsCount","newVal","resizableModel","collapsibleModelUpdate","collapsedOnchange","newValSize","updatePaneSize","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","avgDiffWidth","onReportWindowSize","reportWindowSize","wrapperParent","orientation_1","checkDataAttributes","setDimension","setPaneSettings","enableReversePanes","onMove","currentSeparator","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","convertPercentageToPixel","addStaticPaneClass","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","resizable","triggerResizing","api","removeDataPrefix","paneIndex","dataAttr","paneAPI","restoreElem","childCount","paneCollection","paneValue","checkArrow","targetArrow","hideResizer","showResizer","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","updateIsCollapsed","lastBarArrow","lastBarIndex","targetArrows","beforeAction","beforeCollapseArgs","collapsedindex","collapseEventArgs","afterAction","splitterProperty","sizeValue","splitBar","resizeBar","checkSplitPane","currentBar","collectPanes","getPrevPane","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","updateIconClass","addMouseActions","getPaneDetails","wireClickEvents","allBar","sepSize","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","updateCursorPosition","changeCoordinates","eventType","paneCount","updateSplitterSize","iswindowResize","paneMinRange","updatePane","flexPane","convertPixelToNumber","sizeDiff","convertPixelToPercentage","wireResizeEvents","unwireResizeEvents","hoverBars","collapseAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","collapseClass","updatePaneSettings","prevPaneIndex","nextPaneIndex","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","staticPane","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","removePercentageUnit","calcDragPosition","rectValue","getSeparatorPosition","rectBound","getMinMax","defaultVal","prevPane","getPaneHeight","isValidSize","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","calculateCurrentDimensions","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","draggedPos","prevPaneHeightWidth","separatorTopLeft","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","panesDimension","sizeFlag","templateCompile","compileElement","templateFUN","eleVal","splitNodes","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","removePane","LargeIconsView","uploadOperation","isPasteOperation","ctrlLeft","ctrlRight","csLeft","csRight","shiftSpace","csSpace","shiftdel","ctrlD","startItem","resetMultiSelect","iconsView","onItemCreated","itemList","preventImgDrag","createDragObj","emptyList","selectItems","adjustHeight","getItemCount","checkItem","ondragstart","cwdData","bar","getIndexes","checkEle","checkLength","showThumbnail","clearSelect","largeiconsviewModule","updateSelectedData","addSelection","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","getLastItem","doSelection","onClearAllInit","onBeforeRequest","onAfterRequest","onLayoutRefresh","onUpdateSelectionData","onPathColumn","onMethodCall","splitterResizeHandler","currentSelected","keyboardDownModule","keydownActionHandler","clickObj","doTapAction","cList","triggerSelection","addActive","triggerSelect","details_1","fileOpenArgs","fItem","getFocusedItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","getActiveItem","nItem","getNextItem","perRow","liParent","liScrPos","getCurFocusedItem","rItem","uItem","getDataName","preItem","toCheck","eles","visitedData","byId","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","allowSearchOnTyping","searchEventBind","onPathChange","addressbarUL","addressbarLI","pathNamesLen","addressATag","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","searchContainer","searchEle","onShowInput","searchChangeHandler","utext","subMenuLi","subMenuSpan","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","currentPath","triggerFileOpen","treeNodeId","liElementId","newpath","onUpdatePath","removeSearchValue","onPasteEnd","onSearchTextChange","currentItems","disabledItems","onBeforeItemRender","onBeforeOpen","onBeforeClose","getMenuId","menuTarget","treeFolder","getTargetView","updateActiveModule","setLayoutItem","detailsviewModule","setFileItem","setFolderItem","pasteEle","getMenuItemData","menuModule","menuOpenArgs","disableItem","checkValidItem","isTree","contextMenuSettings","nameEle","menuClickArgs","FileManager","nextPath","deleteRecords","isSameAction","isOpened","uploadingCount","uploadedCount","FileManager_1","ensurePath","checkMobile","navigationPaneSettings","isBigger","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","slItems","fileView","addEventListeners","splitterObj","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolBarHeight","splitterAdjust","oldOne","newOne","onContextMenu","uploadDialogObj","renderUploadBox","onUploading","onRemoving","clearing","onClearing","onSelected","onUploadSuccess","onUploadFailure","uploadSettings","fileListRendering","onFileListRender","updateUploader","uploadEventArgs","onFileUploadSuccess","removeEventListeners","ajaxSettingSetModel","localeSetModelOption","disableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","refreshFiles","FileManagerComponent","TAGNAME","SplitButton","createPrimaryButton","createSecondaryButton","secondaryBtnObj","setAria","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","callBackPromise","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","rangeBar","transitionOnMaterialTooltip","customAriaText","isDragComplete","initialTooltip","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","formChecker","formResetValue","formatInfo","makeRoundNumber","elementVal","fractionalToInteger","noOfDecimals","tens","setZindex","sliderContainer","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","showButtons","setButtons","rangeValueUpdate","previousVal","checkHandleValue","previousChanged","setLimitBar","placement","renderScale","renderTooltip","isMaterial","isBootstrap","isBootstrap4","isTailwind","isMaterialTooltip","firstElementClassName","limitBarFirst","limitBarSecond","firstHandle","secondHandle","customValues","createSecondHandle","createFirstHandle","materialHandle","wireFirstHandleEvt","handleFocus","transitionEnd","handleOver","handleLeave","wireSecondHandleEvt","handleStart","handlePos1","getHandle","tooltipToggle","closeTooltip","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","setBarColor","tooltipValue","setTooltipContent","tooltipObj","addTooltipClass","setAriaAttrValue","setPreviousVal","ariaContent","handle1","handleVal1","handle2","handleVal2","oldCss","newCss","getTooltipTransformProperties","previousTooltipClass","tooltipBeforeOpen","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","tooltipCollidedPosition","beforeCollision","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","materialChange","repeatHandlerUp","customTickCounter","bigNum","tickCount","orien","smallStep","showSmallTicks","largeStep","islargeTick","tickWidth","largestep","createTick","formatTicksValue","decimalPoints","ticksAlignment","ticksWrapper","tickElements","scaleAlignment","tickText","tickElement","tickValuePosition","otherChild","ariaValueText","isTickFormatted","valuenow","activeHandle","getLimitValueAndPosition","minStart","minEnd","maxStart","maxEnd","buttonUp","openTooltip","setRangeBar","handlePos2","checkValidValueAndPos","checkHandlePosition","setLimitBarPositions","fromMinPostion","fromMaxpostion","toMinPostion","toMaxpostion","fromPosition","toPosition","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","preHandlePos2","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","remain","addition","positionToValue","handlepos","handleVal","focusedElement","checkRepeatedValue","handleValueAdjust","handleValue","assignValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","changeSliderType","updateConfig","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackPosition","trackClassName","colorRange","startingPosition","endPosition","trackContainer","CTRLSWITCH","HIDEHEX","HIDERGBA","HIDEVALUE","HSVAREA","MODESWITCH","NOCOLOR","OPACITY","PREVIEW","SHOWVALUE","SELECT","TILE","presets","ColorPicker","Apply","ModeSwitcher","createWidget","createSplitBtn","enableOpacity","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","isRgb","createCtrlBtn","toggleDisabled","refreshPopupPos","splitButton","splitBtn","rgba","convertToRgbString","getPopupEle","popupInst","getPopupInst","bindCallBackEvent","observeOpenArgs","onPopupClose","destroyOtherComp","paletteGroup","appendElement","appendPalette","setNoColor","hsv","rgbToHsv","tile","roundedColor","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createSlider","createDragTooltip","getHsvContainer","hsvToRgb","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","slider","hueSlider","hueChange","createOpacitySlider","opacitySlider","opacityChange","opacityBgTrack","updateOpacitySliderBg","opacityEle","convertToOtherFormat","pValue","rgbToHex","cValue","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","clsName","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","removeTileSelection","convertRgbToNumberArray","pickerKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","handlerDragPosition","triggerChangeEvent","observedcloseArgs","prob","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","emptyCount","inputValueChange","tooltipInst","bigInt","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","changeRtlProps","changePaletteProps","changeOpacityProps","ToolbarRenderer","popupOverlay","onPopupOverlay","removePopupContainer","toolbarBeforeCreate","toolbarClicked","dropDownSelected","popupModal","dropDownClose","popupContainer","beforeCreate","inlineEle","currentDropdown","setIsModel","paletteSelection","dropDownArgs","colorbox","colorPicker","colorpickerValue","setColorPickerContentWidth","pickerRefresh","onmousedown","popupElem","colorPickerContent","beforeTileRender","colorPickerArgs","beforeModeSwitch","toolbarPanel","ToolbarAction","renderSelection","tableQTBar","isToolbar","isTransformChild","toolbarBindEvent","keyBoardModule","toolBarKeyDown","createToolbarElement","tbWrapper","getToolbarMode","tbMode","Scrollable","checkToolbarResponsive","tBarMode","MultiRow","checkIsTransformChild","transformElements","toggleFloatClass","scrollParent","isBody","isFloat","floatOffset","floatingToolbarOffset","scrollParentRelativeTop","trgHeight","bodyStyle","scrollParentYOffset","scrollParentRect","scrollParentTop","divEle","iframeEle","showFixedTBar","hideFixedTBar","trgItem","addTBarItem","prefixId","updateToolbarStatus","hideScreen","popHeight","expandPopup","isToolbarDestroyed","destroyToolbar","getDOMVisibility","focusChangeHandler","dropDownBeforeOpenHandler","tbFocusHandler","activeElm","isToolbaractive","tbKeydownHandler","toolbarActionModule","onRefresh","InterSectionObserver","movableEle","fromWheel","touchMove","containerRect","entered","movableContainerRect","onEnterCallback","virtualScrollHandler","movableContainer","debounced100","debounced50","sentinel","setPageHeight","VirtualRowModelGenerator","cOffsets","movableCache","frozenRightCache","rowCache","rowModelGenerator","loadNext","loadSelf","nextInfo","getBlockIndexes","loadedBlocks","includePrevPage","checkAndResetCache","isBlockAvailable","isMovableBlockAvailable","isFrozenRightBlockAvailable","getStartIndex","getGroupVirtualRecordsByIndex","setBlockForManualRefresh","updateGroupRow","blk","getColumnIndexes","calWidth","iOffset","offsetVal","addFrozenIndex","refreshColOffsets","currentFirst","iterateGroup","oRow","getGroupedTotalBlocks","blockSize","VirtualContentRenderer","prevHeight","preStartIndex","preventEvent","tmpOffsets","VirtualElementHandler","offsetKeys","rndrCount","requestTypes","isNormaledit","emptyRowData","vfColIndex","isSelectionScroll","validationCheck","eventListener","renderWrapper","renderPlaceHolder","debounceEvent","getBlockHeight","adjustTable","blockIndex","colsIndex","recordslength","firstRecords","virtualRows","scrollListener","scrollArgs","scrollAfterEdit","viewInfo","getInfoFromView","restoreEdit","isBlockAdded","tempBlocks","infoType","preEndIndex","getPageFromTop","ensureBlocks","newBlock","firstBlock","setKeyboardNavIndex","blazorDataLoad","blzRowIndex","mIdx","getTotalBlocks","newChild","colVFtable","checkFirstBlockColIndexes","cBlock","cOffset","getColumnOffset","refreshOffsets","vHeight","getTranslateY","adjustMovableTable","setMovableWrapperWidth","setWrapperWidth","setVirtualHeight","getOffset","focusCell","restoreAdd","ensureSelectedRowPosition","validationScrollLeft","initialRowTop","gridTop","validationCol","isRowInView","editedRowIndex","getVirtualEditedData","editForms","startAdd","maxPage","onDataReady","resetScrollPosition","virtualHeightTemp","virtualHeight","setMovableVirtualHeight","cHeight","isOnenter","endTranslate","blockHeight","totalBlocks","isWheel","maxLeft","isLastBlockRow","remainHeight","translateY","visibleRowCount","refreshMaxPage","virtualCellFocus","editActionBegin","addActionBegin","refreshCache","resetIsedit","editCancel","refreshCells","scrollValues","allowScroll","editRequestTypes","virtualRenderer","refreshVirtualElement","addForm","createEmptyRowdata","getRowCollection","getMovableVirtualRowByIndex","getFrozenRightVirtualRowByIndex","isRowObject","rem","fcntColGrp","mcntColGrp","VirtualHeaderRenderer","movableWrapper","setFrozenTable","fhdrColGrp","mhdrColGrp","tablewidth","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","movablePlaceholder","setFreezeWrapperWidth","VirtualScroll","ensurePageSize","virtualEditFormValidation","errorDomRect","contentLeft","existingErrors","setEditedDataToValidationForm","isRenderer","DetailsView","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isNameWidth","checkNameWidth","onDeSelection","detailsViewSettings","columnResizing","DblClickEvents","onBeforeDataBound","onRowDataBound","onHeaderCellInfo","emptyArgs","initialColumn","adjustWidth","nameWidth","iWidth","renderCheckBox","sizeEle","modifiedSize","dateEle","sortItem","sortSelectedNodes","selectRecords","hdTable","cnTable","checkEmptyDiv","gridRecords","sRecords","rData","onSortColumn","onDetailsResize","updatePathColumn","removePathColumn","openContent","onSearchFiles","onPasteInit","onDetailsResizeHandler","dragRow","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","lastItemIndex","gridSelectNodes","selectSize","getFocusedItemIndex","gridItems","gridLength","focIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","shiftSelectedItem","shiftSelectFocusItem","InnerItems","itemArr","fIndex","selRowIndexes","getRecords","hasFilter","dRecords","BaseQuickToolbar","isDOMElement","popupRenderer","dropDownButtons","colorPickerObj","appendPopupContent","popupType","stringItems","imgWrapper","targetOffsetTop","parentOffsetTop","editTop","tBarElementHeight","editHeight","popWidth","viewPort","contentTop","windowY","windowHeight","bodyRightSpace","beforeQuickToolbarArgs","editPanelTop","editPanelHeight","bodyRight","toolbarAvail","expTBHeight","tBarHeight","showPopupData","viewSourcePanel","removeEleFromDOM","removeQTBarItem","PopupRenderer","popupPanel","QuickToolbar","formattedItems","getQTBarOptions","popType","renderType","qTBar","initializeQuickToolbars","selectionChangeHandler","renderQuickToolbars","textQTBar","LinkToolbar","TextToolbar","TableToolbar","renderInlineQuickToolbar","InlineToolbar","deBounce","deBouncer","inlineQTBarMouseDownHandler","onSelectionChange","wireInlineQTBarEvents","unWireInlineQTBarEvents","LABELTOP","LABELBOTTOM","createFloatLabel","searchWrapper","encodePlaceholder","updateFloatLabelState","HIDE_LIST","CHIP","MultiSelect","clearIconWidth","selectAllEventData","selectAllEventEle","keyDownStatus","enableRTL","allowCustomValue","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","updateReadonly","overAllClear","componentWrapper","updateOldPropCssClass","onPopupShown","updateListItems","mainList","showDropDownIcon","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","mainData","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","getForQuery","valuecheck","updateActionList","updateVal","addValidInputClass","mainListCollection","remoteCustomValue","checkForCustomValue","tempQuery","unwireListEvents","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","hideGroupItem","ariaValue","checkMaxSelection","element1","groupItemLength","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","isWordCharacter","expandTextbox","showOverAllClear","remoteFilterAction","dataUpdater","backCommand","dataChecks","wrapperClick","isDocClickFromCheck","updateDelimView","removeChipFocus","refreshInputHight","floatLabelBlur","downIconWidth","setPlaceholderSize","initStatus","updateTempValue","getPagingCount","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","updateListSelection","selectAllItem","selectedElem","addChipSelection","moveByTop","updateCheck","chipClick","onChipRemove","customVal","setFloatLabelType","isClearAll","val_1","removeIndex","removeVal","removedValues","hideElement","updateMainList","removeChip","updateChipStatus","targetEle_1","clearAllCallback","updatedataValueItems","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","chip","chipContent","mouseIn","mouseOut","fieldProperty","checkboxFilter","overAllHeight","checkboxFilterInput","onListMouseDown","textVal","delim","listValue","updateWrapperText","textArr","removeListSelection","indexItem","noDataEle","mainlist","addListHover","ariaCheck","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","checkBoxElement","CLOSEICON_CLASS","wrapperType","wrapperData","wrapperleng","overAllContainer","overflowCountTemplate","totalCountTemplate","remainContent","raminElement","totalCompiledString","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","dropDownIcon","reInitializePoup","msProps","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","optionsElement","valueCol","textCol","optionsLen","checkAutoFocus","placeholderText","placeholderElement","MultiSelectComponent","regularExpressions","createMask","splitMask","splitInnerMask","pushIntoRegExpCollec","chkSpace","customRegExpCollec","hiddenMask","promptChar","escapeMaskValue","promptMask","customCharacters","escapeNumber","applyMask","setMaskValue","maskInputKeyDownHandler","maskInputKeyPressHandler","maskInputKeyUpHandler","maskInputHandler","maskInputFocusHandler","maskInputBlurHandler","maskInputPasteHandler","maskInputCutHandler","maskInputDropHandler","maskInputMouseDownHandler","maskInputMouseUpHandler","redoCollec","triggerMaskChangeEvent","initInputValue","unstrippedValue","strippedValue","maskValues","checkMask","maskValue","_callPasteHandler","regExpCollec","isClicked","modelValue","toAllowForward","toAllowBackward","maskedValue","triggerFocus","backSelectionStart","isFocus","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","validateValue","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","collec","mobileRemoveFunction","autoFillMaskInputValues","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","preValue","prompt_1","isIosInvalid","removeMaskError","startIndex_1","isSpace","preventUnsupportedValues","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","sIdx","ctrl","chkSupport","curVal","caseCount","MaskedTextBox","maskOptions","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","elementWidth","strippedValue_1","strippedVal","getMaskedValue","MaskedTextBoxComponent","FooterRenderer","gridModule","modelGenerator","fDiv","mDiv","frDiv","frozenRightContent","tFoot","frTable","frCol","renderSummaryContent","cStart","cEnd","summaries","rowrenderer","srow","movableLastCell","movableCnt","frozenCnt","frozenDiv","updateFooterTableWidth","movableHeight","refreshCol","mheaderCol","fheaderCol","onWidthChange","getColFromIndex","getIndexByKey","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","cellNode","Aggregate","initiateRender","cellFac","footerRenderer","summaryIterator","cModel","CommandColumnRenderer","buttonElement","unbounDiv","destroyButtons","isVirtualEdit","renderButton","buttonOption","commandType","commandClickHandler","commandColumn","commandCols","commandclickargs","commandCol","chipSet","avatar","singleSelection","chipWrapper","ChipList","multiSelectedChip","chipType","chips","createChip","selectedChips","rippleFunction","chipCreation","chipListArray","fieldsData","chipArray","elementCreation","avatarIconCss","avatarText","leadingIconCss","chipEnabled","trailingIconCss","leadingIconUrl","trailingIconUrl","chipAvatarElement","chipIconElement","chipTextElement","enableDelete","chipdeleteElement","chipIconsElement","chipData","chipElement","chipsData","selectionType","callFromProperty","chipNodes","chipValue","chipElements","selectionHandler","chipElements_1","chipCollection_1","deleteHandler","getSelectedChips","chipDataArgs","chipData_1","deletedItemArgs","selectedItemArgs","clickedItemArgs","updateSelectedChips","chipListEle","chipCollIndex","chipCollValue","removeMultipleAttributes","ChipListComponent","CLOSE","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","enableDock","setDock","setMediaQuery","checkType","setType","setCloseOnDocumentClick","sidebarEleCopy","siblingElement","closeOnDocumentClick","documentclickHandler","dockSize","classELement","destroyBackDrop","showBackdrop","closeArguments","setAnimation","setTimeOut","openArguments","observedopenArgs","createBackDrop","changeArguments","mediaQuery","enableGestureHandler","setEnableGestures","enableGestures","mainContentEle","sidebarEle","SidebarComponent","CLS_ROOT","CLS_HEADER","CLS_CONTENT","CLS_CTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","isDestroy","restoreContent","nested","templateEle","initializeheaderTemplate","initializeItemTemplate","initExpand","expandedIndices","expandMode","initItemExpand","acrdItem_1","templateParser","itemTemplateFn","getheaderTemplate","getItemTemplate","innerEles","toggleIconGenerate","tglIcon","hdrColIcon","expandItem","innerDataSourceItem","renderInnerItem","acrdnCtnItem","acrdnItem","acrdnHdr","acrdnCtn","getIndexByItem","afterContentRender","contentRendering","ariaAttrUpdate","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","eleMoveFocus","clstItem","headerEleGenerate","ctnEle","hdrEle","angularnativeCondiCheck","fetchElement","hdr","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","temString","itemcnt","ctn","trgtItemEle","isExpanded","expandedItemsPush","expandProgress","expandAnimation","icn","lastActiveItemId","getItemElements","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","itemAttribUpdate","innerItemEle","expandedItemRefresh","enableItem","eleHeader","itemExpand","expandedItem","ctnElePos","eleStr","acrdn","changedProp","activeContent","AccordionComponent","LEFTCALENDER","RIGHTCALENDER","STARTDATE","ENDDATE","INPUTFOCUS","RANGEHOVER","CALENDAR","TITLE","FOCUSDATE","CONTENT","DAYSPAN","DATEDISABLED","ICONDISABLED","LISTCLASS","Presets","DateRangePicker","isCustomRange","isCustomWindow","presetsItem","previousEleValue","isKeyPopup","dateDisabled","isRangeIconClicked","isMaxDaysClicked","disabledDays","dateRangeOptions","setModelValue","setDataAttribute","keyInputConfigs","defaultConstant","customRange","applyText","cancelText","selectedDays","angularTag","checkInvalidRange","rangeArray","initProperty","navNextFunction","navNextMonth","navPrevFunction","navPrevMonth","deviceNavNextFunction","deviceNavNext","deviceNavPrevFunction","deviceNavPrevious","initStartDate","initEndDate","processPresets","setRangeAllowEdit","firstHiddenChild","secondHiddenChild","updateClearIconState","dateRangeStyle","cssNewClass","cssOldClass","rangeIconHandler","inputKeyboardModule","updateHiddenInput","clearRange","previousStartValue","previousEndValue","startCopy","endCopy","applyButton","applyFunction","leftCalendar","calendarFocus","minDays","maxDays","adjustLongHeaderWidth","isPreset","createPresets","listRippleEffect","createControl","bindCalendarEvents","updateRange","rightCalendar","disabledDateRender","updateHeader","clearCalendarEvents","leftCalPrevIcon","leftCalNextIcon","rightCalPrevIcon","rightCalNextIcon","updateNavIcons","calendarIconEvent","deviceCalendarEvent","startButton","deviceHeaderClick","endButton","calendarIconRipple","leftKeyboardModule","keyInputHandler","rightKeyboardModule","bindCalendarCellEvents","removeFocusedDate","updateDeviceCalendar","deviceNavigation","deviceCalendar","removeClassDisabled","updateMinMaxDays","selectableDates","prevStartVal","prevEndVal","refreshControl","inputStr","isDateDisabled","keyCalendarUpdate","isLeftCalendar","leftCalCurrentDate","rightCalCurrentDate","updateCalendarElement","navInCalendar","leftLimit","rightLimit","rightDateLimit","leftDateLimit","presetElement","yearDate","calendarNavigation","checkMinMaxDays","presetHeight","tdCells_1","hoverSelection","focusedDate_1","eleDate","isSameMonth","isSameYear","tdCells_2","isDisabledCell","startDateValue","isSameStartEnd","startVal","endVal","elementCollection","elementCollection_1","tdCells_3","eleDateValue","eleDateValue_1","addSelectedAttributes","endDateValue","rangeArgs","removeTimeValueFromDate","otherMonthSelect","isStartDate","sameDate","tdCell","firstMonth","lastMonth","endEle_1","endEle_2","ele_2","removeSelectedAttributes","tdCells","tdCells_4","tdCells_5","startMonth","startValueSelected","maxEle","tdCells_6","calendar_1","tdCells_7","disabledDayCnt","updateControl","createRangeHeader","labelContainer","endBtn","startBtn","changeIcon","disableInput","validateRangeStrict","validateMinMaxDays","validateRange","renderCalendar","isSameDecade","endYear","startMonthCurrentDate","selectNextMonth","selectNextYear","selectNextDecade","decyr","selectStartMonth","calendarContainer","prevIcon","leftTitle","leftContainer","rightContainer","leftNavTitle","rightTitle","rightNavTitle","getCalendarView","controlContainer","headerContainer","footerSection","cancelBtn","CANCEL","applyBtn","cancelFunction","deviceHeaderUpdate","isValueChanged","closeEventArgs","popupKeyboardModule","popupKeyActionHandle","isClick","setListSelection","renderCustomPopup","applyPresetRange","listTag","customElement","btnKeyboardModule","presetKeyboardModule","presetKeyActionHandler","popupKeyBoardHandler","popupCloseHandler","rangeContainer","listMoveDown","listMoveUp","hvrItem","getHoverLI","actItem","getActiveLI","formatOption","startinvalue","endinvalue","startString","endString","startObject","endObject","invalidobject","getstringvalue","toLocaleDateString","formatOpt","basISOString","virtualRenderCellArgs","virtualRenderCellEvent","isStartDisabled","isEndDisabled","createHiddenInput","getSelectedRange","mobileRangePopupWrap","refreshChange","enableInput","clearModelvalue","setMinMaxDays","DateRangePickerComponent","_console","alreadyWarned","warnOnce","loadNamespaces","i18n","initialized","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","i18nOptions","addUsedNamespaces","initializedStoreOnce","getT","getFixedT","nsMode","_useState","_useState2","setT","boundReset","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","HIDEICON","NODATA","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isFirstRender","currentText","selectedText","treeItems","isNodeSelected","altUp","altDown","popupDiv","ensureAutoCheck","getDirective","createHiddenElement","createClearIcon","tree","wireTreeEvents","renderTree","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","treeSettings","hideCheckAll","checkAllEle","renderFilter","filterContainer","filterChangeHandler","filterFields","cloneFields","treeDataType","selfReferencefilter","nestedFilter","getTreeFields","filteredFields","matchedDataSource","filteredChild","nestedChildFilter","isMatchedNode","matchedChildren","matchedData","parentValue","treeAction","wireCheckAllWrapperEvents","checkAllAction","isClearButtonClick","isValue","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","isValueChange","keyEventArgs","remainElement","updateDelimMode","getSelectedData","chipCollection","getValidMode","createSelectAllWrapper","isReverseUpdate","setValidValue","updateMode","updateSelectedValues","givenText","getNestedItems","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","OnDataBound","nodeSelecting","onBeforeSelect","isCancelled","POPUP_CLASS","updatePopupHeight","inputWidth","ddElement","isScroller","getTreeDataType","restoreFilterSelection","cloneChildField","getTreeChildren","childFields","getEventArgs","updateDropDownIconState","spinIcon","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","ddtValue","checkSelection","getChildNodeData","newChildItems","getChildMapperFields","childNodeData","hiddenInputValue","setChipValues","CHIP_CLOSE","setSelectAllWrapper","updateOverflowWrapper","clearCheckAll","updateTreeSettings","updateCheckBoxState","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateModelMode","overFlow","DropDownTreeComponent","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","seriesSpacing","columnSpacing","pointSpacing","getRectangle","point1","point2","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","histogramValues","binWidth","getRegion","calculateRoundedRectPath","bottomLeft","bottomRight","rectElements","visiblePoints_1","animateRect","isPlot","elementHeight","ColumnSeries","sideBySideInfo","pointColumn","BaseTooltip","getTooltipElement","isTooltip","isStockChart","stopAnimation","removeHighlight","highlightPoint","accumulationSelectionModule","isSelectedElement","highlightPoints","clipLocation","extraPoints","templatePoint","accumulationTooltipModule","contentSize","tooltipTemplate","replaceAll","heightPadding","getPositionBySize","svgTooltip","SVGTooltip","findPalette","enableTextWrap","updatePreviousPoint","animationComplete","isTooltipFitPosition","findColor","valueX","valueY","toolTipInterval","removeTooltip","isTemplateRendered","mouseLeaveHandler","fadeOutMode","findData","fadeOutDuration","disableTrackTooltip","onPanning","isStockSvg","renderGroupedTooltip","renderSeriesTooltip","findHeader","parseTemplate","findShapes","enableMarker","isPointDragging","triggerTooltipRender","findMouseValue","pointText","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","triggerSharedTooltip","triggerBlazorSharedTooltip","findSharedLocation","blazorSharedTooltip","sharedTooltipSuccess","toolbarHeight","isXPoint","isYPoint","tooltipFormat","getIndicatorTooltipFormat","textX","NiceInterval","calculateDateTimeNiceInterval","totalDays","actualIntervalType","intervalType","getSkeleton","getDayFormat","getMonthFormat","findCustomFormats","Category","CONTENTCLS","SpinSettings","ProgressButton","isPaused","startProgress","progressTime","progressComplete","finishProgress","spinSettings","enableProgress","createProgress","setSpinPosition","getSpinner","getProgress","setContentIcon","contElem","startAnimate","startContAnimate","prevTime","prevPercent","prevProgressTime","timeDiff","stepTime","timeDiffBuffer_1","currentDuration","eIsVertical","successCallback","perc","pPerc","prgTim","pPrgTim","timDif","pTim","timeDiffBuffer","hideSpin","setSpinnerSize","setIconSpan","isSpinning","ProgressButtonComponent","MESSAGE","PROGRESS","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","Toast","toastCollection","progressObj","intervalId","contentTemplate","toastTemplate","initRenderClass","toastObj","collectionObj","templateChanges","toastContainer","getContainer","setPositioning","isToastModel","toastEle","setWidthHeight","personalizeToast","templateRendering","setProgress","setCloseButton","appendToTarget","showToast","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","interactionType","newestOnTop","destroyToast","tempVar","tmpArray","clo","clearProgress","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","progressEle","setIcon","setTitle","showCloseButton","hideEta","maxHideTime","timeOutId","extendedTimeout","toastHoverAction","delayedToastProgress","showProgressBar","progressBarEle","updateProgressBar","progressDirection","titleEle","msgContainer","tempEle_1","appendMessageContainer","actionBtnContainer","actionBtn","btnDom","toastBeforeOpen","toastBeforeOpenArgs","displayToast","clickToClose","isCloseIcon","toastClickArgs","showAnimate","toastOpen","ToastComponent","TimePickerBase","DAY","YEAR","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","blazorTimeCollections","disableItemCollection","timeOptions","openPopupEventArgs","checkTimeFormat","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkInValue","isNavigate","isTextSelected","valueWithMinutes","updatedCssClassesValue","isNullOrEmpty","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getBlazorCultureFormat","getCultureTimeObject","ariaAttribute","enableElement","propertyList","generateList","listWrapper","getPopupHeight","containerStyle","setPopupWidth","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","toDateString","scrollTime","toLocaleTimeString","cldrTimeFormat","cldrDateFormat","getCultureDateObject","formatVal","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","updateBlazorTimeCollections","popupHandler","curPos","cursorDetails","focusSelection","objToString","previousState","documentClickHandler","disposeServerPopup","mobileTimePopupWrap","checkValueChange","valueProcess","maxVal","dateVal","strictOperation","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","newval","findNextElement","timeVal","selectNextItem","validLiElement","findNextInBlazor","index_2","index_3","index_4","backward","getHoverItem","setActiveClass","formatStr","timeParse","getProperty","popupAlignment","timePopupElement","formatValues","HOUR","MINUTE","SECOND","MILLISECOND","scrollInvoked","dateTimeOptions","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isDisable","timeIcon","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","timeModal","timeKeyActionHandle","unWireTimeListEvents","setTimeHover","removeTimeHover","setInputValue","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","findNextTimeElement","dateTimeVal","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","VMENU","tempItems","updateMenuItems","createMenuItems","pIdField","MenuComponent","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_POPUP","CLS_VTAB","TabActionSettings","TabAnimationSettings","TabItem","Tab","isIconAlone","draggableItems","refreshActElePosition","tbObj","expTemplateContent","loadOn","setActiveBorder","isPopup","isSwipeed","itemIndexArray","updatePopAnimationConfig","btnCls","tabId","renderContainer","setOrientation","headerPlacement","renderHeader","bdrLine","CLS_INDICATOR","scrCnt","scrCntClass","tbItem","tabID","serverItemsChanged","content_1","triggerAnimation","headerReady","getTabHeader","setActiveContent","getTrgContent","extIndex","hdrPlace","tabItems","addVerticalClass","hdrItems","tabItems_1","parseObject","updateOrientationAttribute","hdrItem","reRenderItems","txtWrapEle","tbCount","tItems","spliceArray","isReplace","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","tbPop","tbrItems","isOverflow","ripEle","actEleId","prevEle","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","newCnt","prevActiveEle","idNo","openEff","clsEff","trgParent","trgIndex","getEleIndex","findEle","tbPos","place","activeTab","changeToolbarOrientation","curActItem","serverChangeOrientation","headerPos","contentPos","heightAdjustMode","trgHdrEle","bar_1","tbWidth","skipDataBind","trg_1","eleTrg","refreshItemVisibility","eventArg","prevItem","previousIndex","selectedContent","selectingID","isSwiped","refreshActiveBorder","tbPopObj","bindDraggable","spaceKeyDown","tabKeyModule","removeTab","clstHead","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","cntItem","isHiddenEle","addTab","hideTab","enableTab","itemDragStart","dropItem","dragItem","draggedItem","droppedItem","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","droppedIndex","itemDragStop","draggingItems","tabitemDragArgs","dragsIndex","lastEle","dragStopArgs","tabItemDropArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","tabItemId","refreshActiveTab","detachContent","mainContents","txtString","conte","crElem","tConts","wrapAtt","wraper","TabComponent","effectsConfig","effectsRTLConfig","listIcon","listItemText","groupListItem","headerTemplateText","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","ListView","previousSelectedItems","enabledItems","setHTMLAttribute","virtualizationModule","reRenderUiVirtualization","curDSLevel","headerTitle","contentContainer","setCheckbox","curViewDS","getSubDS","resetCurrentList","isWindow","showBack","showHeader","innerHeaderEle","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","fPos_1","overflow_1","anim","curUL","initialization","animateOptions","currentLiElements","isNestedList","selectedId","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","refreshItemHeight","setCheckboxLI","selectEventData","setSelectLI","setHoverLI","leaveHandler","homeKeyHandler","onArrowKeyDown","arrowKeyHandler","elementTop","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","spaceKeyHandler","swipeActionHandler","focusout","focusedLI_1","hoverLI","renderSubList","lastLi","levelKeys","levelKeys_1","curDSJSON","findItemFromDS","curDS","getElementUID","resultJSON","setViewDataSource","isInAnimation","renderRemoteLists","listViewComponent","triggerActionFailure","setLocalData","renderIntoDom","exceptionEvent","UpdateCurrentUL","isNgTemplate","createUIItem","uiVirtualization","classAr","pID","toUL","fromUL","selectItem","selectMultipleItems","getParentId","getSelectedItems","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","setItemState","showItem","showHideItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","listDataSource","removeItemFromList","groupLi","validateNestedView","foundData","findParent","dsIndex","li_1","liID","removeMultipleItems","ListViewComponent"],"mappings":"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G,EArJqB,GA2J5B6C,EAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,WACP,IAAO,MACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,SACP,IAAO,uBACP,IAAO,uBACP,IAAO,KACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,iBACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QC3UX,SAAWjD,GAEP,IAAIkD,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvJ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,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,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P3B,GAAS,MACVqa,EAAM/6C,UAAW,wBAAoB,GACxCqiC,GAAW,CACPvB,GAAQ,GAAI+Z,KACbE,EAAM/6C,UAAW,qBAAiB,GACrC+6C,EAAQ1Y,GAAW,CACfjB,IACD2Z,GAhQoB,CAkQzBjf,IC3TEgjB,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQtqB,SAAU,yBAC/B,CAAEsqB,UAAW,aAActqB,SAAU,+BACrC,CAAEsqB,UAAW,QAAStqB,SAAU,0BAChC,CAAEsqB,UAAW,QAAStqB,SAAU,0BAChC,CAAEsqB,UAAW,OAAQtqB,SAAU,qCAE/BuqB,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,oBAEAC,GAAoC,WACpC,SAASA,KA2ET,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACN7nB,WAAY8nB,MAKxBG,EAAmBI,SAAW,SAAUh/C,GACpC,IAAIi/C,EAAOz7C,KAAKq7C,iBAEhB,OADar7C,KAAK07C,eAAeD,EAAMj/C,IAG3C4+C,EAAmBM,eAAiB,SAAUD,EAAMj/C,GAChDwD,KAAKi7C,YAAcQ,EAAKH,UAAUnoB,WAClCnzB,KAAKg7C,WAAaS,EAAKH,UAAUC,KACjCv7C,KAAK27C,YAAcn7C,SAASW,cAAc,OAC1CnB,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AU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,UAEdr+C,EAASwhD,YAAc,CAQnBC,MAAO,SAAUjlG,EAAQ4R,EAAUi2E,EAAY+b,GAK3C,OAJIA,IACA5jG,EAASwjD,EAASo+C,iBAAiB5hG,GACnC4R,EAAW4xC,EAASo+C,iBAAiBhwF,IAErCi2E,EACOrkC,EAAS7rD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IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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,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AAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU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C7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,OAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAE7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAM,MAC7CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,MAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,KAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,SAAS,MAAO,OAC9CiD,KAAK2vX,yBAAyB5yX,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","file":"static/js/2.8dddaf56.chunk.js","sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @return {any}\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n * @param {Function} handler - callback function to be triggered.\n * @return {Function}\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @return {any}\n * @private\n */\nexport function getValue(nameSpace, obj) {\n /* tslint:disable no-any */\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} params - String value to the get the inner object\n * @return {void}\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n * @param {any} obj - Object which is need to check.\n * @return {boolean}\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @return {any}\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @return {void}\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @return {Object}\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!arguments_1[i]) {\n return \"continue\";\n }\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, deep);\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n * @param {Object} value - To check the object is null or undefined\n * @return {boolean}\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n * @param {Object} value - To check the object is undefined\n * @return {boolean}\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n * @param {string} definedName - To concatenate the unique id to provided name\n * @return {string}\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @return {Function}\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n // tslint:disable-next-line\n return function () {\n var _this = this;\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n// Added since lint ignored after added '//tslint:disable-next-line' \n/* tslint:disable:no-any */\n/**\n * To convert the object to string for query url\n * @param {Object} data\n * @returns string\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n * @param {T[]} value- Specifies the T type array to be checked.\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n * @param{Element} - Specifies the child element to compare with parent.\n * @param{Element} - Specifies the parent element.\n * @return boolean\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n * @param{string} - Specifies the error message to be thrown.\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n * @param{Element} element - Specifies the print content element.\n * @param{Window} printWindow - Specifies the print window.\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[l]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar latnRegex = /^[0-9]*$/;\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n var charKey = datePartMatcher[char];\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar number = 'numbers';\nvar defNoSystem = 'defaultNumberingSystem';\nvar noSystem = 'numberingSystem';\nvar standalone = 'stand-alone';\nvar curWeekDay = 'curWeekDay';\nvar latnRegex = /^[0-9]*$/;\nvar abbreviateRegex = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|ccc/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // tslint:disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n var iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n var nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var result;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n/* tslint:enable */\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar formatRegex = /(^[ncpa]{1})([0-1]?[0-9]|20)?$/i;\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar latnDecimalRegex = /^[0-9]*(\\.[0-9]+)?$/;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // tslint:disable-next-line:no-any\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n */\n Observer.prototype.notExist = function (prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n Browser.getEvent = function (event) {\n // tslint:disable-next-line:no-any\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer && !Browser.isWindows ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n var fn = null;\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\";\" + condtion + \" return str;\";\n //let fnCode: string = `var str=\"${evalExpResult}\"; return str;`;\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /\\@|\\$|\\#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n var double = \"\\\\\\\\\";\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\\\s]+))?)*)\\s*(\\/?)>/;\nvar endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nvar attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nexport var VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n var children = [];\n var extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n var keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n var valArr = extended.styles.split(';');\n var vObj = {};\n for (var i = 0, length_1 = valArr.length; i < length_1; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach(function (child) {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (var i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n var parent = element.parent;\n if (parent) {\n var index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector(_a) {\n var ele = _a.ele, selector = _a.selector, selectAll = _a.selectAll, immediateParent = _a.immediateParent;\n var iSelector = selector.split(' ');\n var curColl = ele;\n for (var i = 0, length_2 = iSelector.length; i < length_2; i++) {\n var isDescendant = false;\n var parent_2 = curColl;\n var curSelector = iSelector[i];\n var simpleSelector = false;\n var mapper = [];\n if (simpleRegex.test(curSelector)) {\n simpleSelector = true;\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n var splitSelector = curSelector.match(multipleSplitRegex);\n for (var _i = 0, splitSelector_1 = splitSelector; _i < splitSelector_1.length; _i++) {\n var curMap = splitSelector_1[_i];\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n var dSelector = curSelector.split('>');\n //tslint:disable-next-line\n var dParent = ele;\n var descendent = void 0;\n var flag = 0;\n for (var _b = 0, dSelector_1 = dSelector; _b < dSelector_1.length; _b++) {\n var sel = dSelector_1[_b];\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n var descendentChild = [];\n for (var _c = 0, dParent_1 = dParent; _c < dParent_1.length; _c++) {\n var child = dParent_1[_c];\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll: selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll: selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent_2.length) {\n var iCurSelector = [];\n for (var _d = 0, parent_1 = parent_2; _d < parent_1.length; _d++) {\n var curParent = parent_1[_d];\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent_2, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n var match = selector.match(idClassSelector);\n var obj = {};\n if (match) {\n var curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n var curObj = mapper.filter(function (obj) { return obj.hasOwnProperty('className'); })[0];\n var canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n var existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n var temp_1 = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n var matched = true;\n for (var _i = 0, mapper_1 = mapper; _i < mapper_1.length; _i++) {\n var map = mapper_1[_i];\n var key = Object.keys(map)[0];\n var expected = map[key];\n var actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp_1.length || selectAll)) {\n ele.children.forEach(function (child) {\n if (isObject(child)) {\n temp_1 = temp_1.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp_1;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n var results = [];\n var isText;\n var tagArray = [];\n var backup = htmlString;\n var nodeArray = [];\n while (htmlString) {\n isText = true;\n var lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), function (all, text) {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n backup = htmlString;\n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n var isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n var attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n //tslint:disable-next-line\n var val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n var valArr = val.split(';');\n var vObj = {};\n for (var i = 0, length_3 = valArr.length; i < length_3; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n var tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n var parent_3 = (nodeArray[0] || results);\n if (parent_3.children === undefined) {\n parent_3.children = [];\n }\n tagObject.parent = parent_3;\n parent_3.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n var pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (var j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n var node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n var parent_4 = nodeArray[0];\n if (parent_4.children === undefined) {\n parent_4.children = [];\n }\n node.parent = parent_4;\n parent_4.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n var parent_5 = nodeArray[0];\n if (parent_5.children === undefined) {\n parent_5.children = [];\n }\n parent_5.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n /* istanbul ignore next */\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n /* istanbul ignore next */\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n /* istanbul ignore next */\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\n/* istanbul ignore next */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/* istanbul ignore next */\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n/* istanbul ignore next */\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n/* istanbul ignore next */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () { });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // tslint:disable-next-line:no-any\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.enableScrollHandler = false;\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 if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\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 && this.dragArea) {\n this.getScrollableValues();\n pageY -= this.tempScrollHeight ? this.parentScrollY : 0;\n pageX -= this.tempScrollWidth ? this.parentScrollX : 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","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n object = object[key];\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return getPath(this.data, path);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy$$1 = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy$$1[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy$$1[m] === deepKey) copy$$1[m] = res[m];\n }\n }\n\n res = copy$$1;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options);\n } else {\n var usedDefault = false;\n var usedKey = false;\n\n if (!this.isValidLookup(res) && options.defaultValue !== undefined) {\n usedDefault = true;\n\n if (options.count !== undefined) {\n var suffix = this.pluralResolver.getSuffix(lng, options.count);\n res = options[\"defaultValue\".concat(suffix)];\n }\n\n if (!res) res = options.defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = options.defaultValue && options.defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? options.defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (l) {\n var plurals = _this2.pluralResolver.getPluralFormsOfKey(l, key);\n\n plurals.forEach(function (p) {\n return send([l], p);\n });\n });\n } else {\n send(lngs, key);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n return _this3.translate.apply(_this3, arguments);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var _this = this;\n\n var ret = [];\n var rule = this.getRule(code);\n if (!rule) return ret;\n rule.numbers.forEach(function (n) {\n var suffix = _this.getSuffix(code, n);\n\n ret.push(\"\".concat(key).concat(suffix));\n });\n return ret;\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n replaces = 0;\n\n while (match = this.regexpUnescape.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else {\n this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n str = str.replace(match[0], regexSafe(value));\n this.regexpUnescape.lastIndex = 0;\n replaces++;\n\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n\n replaces = 0;\n\n while (match = this.regexp.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var _temp = missingInterpolationHandler(str, match, options);\n\n value = typeof _temp === 'string' ? _temp : '';\n } else {\n this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n value = this.escapeValue ? regexSafe(this.escape(value)) : regexSafe(value);\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n replaces++;\n\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, options);\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (!this.modules.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var deferred = defer();\n\n var load = function load() {\n _this2.changeLanguage(_this2.options.lng, function (err, t) {\n _this2.isInitialized = true;\n\n _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n });\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n","module.exports = require(\"regenerator-runtime\");\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, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[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 * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[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}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[items].length; i < len; i++) {\n var gLevel = val.data[items][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 * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[items].length; j < length_1; j++) {\n var nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\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/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[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/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column) || columns[c].columns) {\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/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[i].classList.add(clName);\n }\n else {\n elem[i].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[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/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[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 *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @returns {Predicate} Returns the Predicate\n * @hidden\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 * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\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 * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n 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 * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n 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 printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[i]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\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 * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[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 * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[i].field).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.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/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[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) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @returns {void}\n * @hidden\n */\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(literals.ariaRowIndex, startIndex.toString());\n if (rows[i].isAltRow) {\n rowElms[i].classList.add('e-altrow');\n }\n else {\n rowElms[i].classList.remove('e-altrow');\n }\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/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[type].concat(changes[type]).reduce(function (r, o) {\n r[o[keyField]] = r[o[keyField]] === undefined ? o : Object.assign(r[o[keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[type] = Object.keys(newArray).map(function (k) { return newArray[k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n 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() === literals.leftRight ? '.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() === literals.leftRight) {\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/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\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 === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\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// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[k]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].getElementsByClassName(literals.rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\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/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\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/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @returns {string} returns formated value\n * @hidden\n */\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 // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[i].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n 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 (isContent && parent.isRowDragable()) {\n var index = 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}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[id][evts[i]] = handlers[evts[i]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[i], instance.eventHandlers[component.element.id][evts[i]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[i]);\n var value = values[i] === 'null' ? null : values[i];\n var pred = {\n field: fields[i], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[i].isCaptionRow && fields.indexOf(rowsObject[i].data.field) === -1\n && (rowsObject[i].indent < rowsObject[index].indent || i === index)) {\n fields.push(rowsObject[i].data.field);\n keys.push(rowsObject[i].data.key);\n if (rowsObject[i].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","/**\n * @hidden\n\n */\nexport var created = 'create';\n/**\n * @hidden\n\n */\nexport var destroyed = 'destroy';\n/**\n * @hidden\n\n */\nexport var load = 'load';\n/**\n * Specifies Rich Text Editor internal events\n */\n/**\n * @hidden\n\n */\nexport var initialLoad = 'initial-load';\n/**\n * @hidden\n\n */\nexport var contentChanged = 'content-changed';\n/**\n * @hidden\n\n */\nexport var initialEnd = 'initial-end';\n/**\n * @hidden\n\n */\nexport var iframeMouseDown = 'iframe-click';\n/**\n * @hidden\n\n */\nexport var destroy = 'destroy';\n/**\n * @hidden\n\n */\nexport var toolbarClick = 'toolbarClick';\n/**\n * @hidden\n\n */\nexport var toolbarRefresh = 'toolbar-refresh';\n/**\n * @hidden\n\n */\nexport var refreshBegin = 'refresh-begin';\n/**\n * @hidden\n\n */\nexport var toolbarUpdated = 'toolbar-updated';\n/**\n * @hidden\n\n */\nexport var bindOnEnd = 'bind-on-end';\n/**\n * @hidden\n\n */\nexport var renderColorPicker = 'render-color-picker';\n/**\n * @hidden\n\n */\nexport var htmlToolbarClick = 'html-toolbar-click';\n/**\n * @hidden\n\n */\nexport var markdownToolbarClick = 'markdown-toolbar-click';\n/**\n * @hidden\n\n */\nexport var destroyColorPicker = 'destroy-color-picker';\n/**\n * @hidden\n\n */\nexport var modelChanged = 'model-changed';\n/**\n * @hidden\n\n */\nexport var keyUp = 'keyUp';\n/**\n * @hidden\n\n */\nexport var keyDown = 'keyDown';\n/**\n * @hidden\n\n */\nexport var mouseUp = 'mouseUp';\n/**\n * @hidden\n\n */\nexport var toolbarCreated = 'toolbarCreated';\n/**\n * @hidden\n\n */\nexport var toolbarRenderComplete = 'toolbarRenderComplete';\n/**\n * @hidden\n\n */\nexport var enableFullScreen = 'enableFullScreen';\n/**\n * @hidden\n\n */\nexport var disableFullScreen = 'disableFullScreen';\n/**\n * @hidden\n\n */\nexport var dropDownSelect = 'dropDownSelect';\n/**\n * @hidden\n\n */\nexport var beforeDropDownItemRender = 'beforeDropDownItemRender';\n/**\n * @hidden\n\n */\nexport var execCommandCallBack = 'execCommandCallBack';\n/**\n * @hidden\n\n */\nexport var imageToolbarAction = 'image-toolbar-action';\n/**\n * @hidden\n\n */\nexport var linkToolbarAction = 'link-toolbar-action';\n/**\n * @hidden\n\n */\nexport var windowResize = 'resize';\n/**\n * @hidden\n\n */\nexport var resizeStart = 'resizeStart';\n/**\n * @hidden\n\n */\nexport var onResize = 'resizing';\n/**\n * @hidden\n\n */\nexport var resizeStop = 'resizeStop';\n/**\n * @hidden\n\n */\nexport var undo = 'undo';\n/**\n * @hidden\n\n */\nexport var redo = 'redo';\n/**\n * @hidden\n\n */\nexport var insertLink = 'insertLink';\n/**\n * @hidden\n\n */\nexport var unLink = 'unLink';\n/**\n * @hidden\n\n */\nexport var editLink = 'editLink';\n/**\n * @hidden\n\n */\nexport var openLink = 'openLink';\n/**\n * @hidden\n\n */\nexport var actionBegin = 'actionBegin';\n/**\n * @hidden\n\n */\nexport var actionComplete = 'actionComplete';\n/**\n * @hidden\n\n */\nexport var updatedToolbarStatus = 'updatedToolbarStatus';\n/**\n * @hidden\n\n */\nexport var actionSuccess = 'actionSuccess';\n/**\n * @hidden\n\n */\nexport var updateToolbarItem = 'updateToolbarItem';\n/**\n * @hidden\n\n */\nexport var insertImage = 'insertImage';\n/**\n * @hidden\n\n */\nexport var insertCompleted = 'insertCompleted';\n/**\n * @hidden\n\n */\nexport var imageLeft = 'justifyLeft';\n/**\n * @hidden\n\n */\nexport var imageRight = 'justifyRight';\n/**\n * @hidden\n\n */\nexport var imageCenter = 'justifyCenter';\n/**\n * @hidden\n\n */\nexport var imageBreak = 'break';\n/**\n * @hidden\n\n */\nexport var imageInline = 'inline';\n/**\n * @hidden\n\n */\nexport var imageLink = 'insertImgLink';\n/**\n * @hidden\n\n */\nexport var imageAlt = 'imgAltText';\n/**\n * @hidden\n\n */\nexport var imageDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var imageCaption = 'caption';\n/**\n * @hidden\n\n */\nexport var imageSize = 'imageSize';\n/**\n * @hidden\n\n */\nexport var sourceCode = 'sourceCode';\n/**\n * @hidden\n\n */\nexport var updateSource = 'updateSource';\n/**\n * @hidden\n\n */\nexport var toolbarOpen = 'toolbarOpen';\n/**\n * @hidden\n\n */\nexport var beforeDropDownOpen = 'beforeDropDownOpen';\n/**\n * @hidden\n\n */\nexport var selectionSave = 'selection-save';\n/**\n * @hidden\n\n */\nexport var selectionRestore = 'selection-restore';\n/**\n * @hidden\n\n */\nexport var expandPopupClick = 'expandPopupClick';\n/**\n * @hidden\n\n */\nexport var count = 'count';\n/**\n * @hidden\n\n */\nexport var contentFocus = 'contentFocus';\n/**\n * @hidden\n\n */\nexport var contentBlur = 'contentBlur';\n/**\n * @hidden\n\n */\nexport var mouseDown = 'mouseDown';\n/**\n * @hidden\n\n */\nexport var sourceCodeMouseDown = 'sourceCodeMouseDown';\n/**\n * @hidden\n\n */\nexport var editAreaClick = 'editAreaClick';\n/**\n * @hidden\n\n */\nexport var scroll = 'scroll';\n/**\n * @hidden\n\n */\nexport var contentscroll = 'contentscroll';\n/**\n * @hidden\n\n */\nexport var colorPickerChanged = 'colorPickerChanged';\n/**\n * @hidden\n\n */\nexport var tableColorPickerChanged = 'tableColorPickerChanged';\n/**\n * @hidden\n\n */\nexport var focusChange = 'focusChange';\n/**\n * @hidden\n\n */\nexport var selectAll = 'selectAll';\n/**\n * @hidden\n\n */\nexport var selectRange = 'selectRange';\n/**\n * @hidden\n\n */\nexport var getSelectedHtml = 'getSelectedHtml';\n/**\n * @hidden\n\n */\nexport var renderInlineToolbar = 'renderInlineToolbar';\n/**\n * @hidden\n\n */\nexport var paste = 'paste-content';\n/**\n * @hidden\n\n */\nexport var imgModule = 'imageModule';\n/**\n * @hidden\n\n */\nexport var rtlMode = 'rtl-mode';\n/**\n * @hidden\n\n */\nexport var createTable = 'createTable';\n/**\n * @hidden\n\n */\nexport var docClick = 'docClick';\n/**\n * @hidden\n\n */\nexport var tableToolbarAction = 'table-toolbar-action';\n/**\n * @hidden\n\n */\nexport var checkUndo = 'checkUndoStack';\n/**\n * @hidden\n\n */\nexport var readOnlyMode = 'readOnlyMode';\n/**\n * @hidden\n\n */\nexport var pasteClean = 'pasteClean';\n/**\n * @hidden\n\n */\nexport var beforeDialogOpen = 'beforeDialogOpen';\n/**\n * @hidden\n\n */\nexport var clearDialogObj = 'clearDialogObj';\n/**\n * @hidden\n\n */\nexport var dialogOpen = 'dialogOpen';\n/**\n * @hidden\n\n */\nexport var beforeDialogClose = 'beforeDialogClose';\n/**\n * @hidden\n\n */\nexport var dialogClose = 'dialogClose';\n/**\n * @hidden\n\n */\nexport var beforeQuickToolbarOpen = 'beforeQuickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarOpen = 'quickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarClose = 'quickToolbarClose';\n/**\n * @hidden\n\n */\nexport var popupHide = 'popupHide';\n/**\n * @hidden\n\n */\nexport var imageSelected = 'imageSelected';\n/**\n * @hidden\n\n */\nexport var imageUploading = 'imageUploading';\n/**\n * @hidden\n\n */\nexport var imageUploadSuccess = 'imageUploadSuccess';\n/**\n * @hidden\n\n */\nexport var imageUploadFailed = 'imageUploadFailed';\n/**\n * @hidden\n\n */\nexport var imageRemoving = 'imageRemoving';\n/**\n * @hidden\n\n */\nexport var afterImageDelete = 'afterImageDelete';\n/**\n * @hidden\n\n */\nexport var drop = 'drop';\n/**\n * @hidden\n\n */\nexport var xhtmlValidation = 'xhtmlValidation';\n/**\n * @hidden\n\n */\nexport var beforeImageUpload = 'beforeImageUpload';\n/**\n * @hidden\n\n */\nexport var resizeInitialized = 'resizeInitialized';\n/**\n * @hidden\n\n */\nexport var renderFileManager = 'renderFileManager';\n/**\n * @hidden\n\n */\nexport var beforeImageDrop = 'beforeImageDrop';\n/**\n * @hidden\n\n */\nexport var dynamicModule = 'dynamicModule';\n/**\n * @hidden\n\n */\nexport var beforePasteCleanup = 'beforePasteCleanup';\n/**\n * @hidden\n\n */\nexport var afterPasteCleanup = 'afterPasteCleanup';\n/**\n * @hidden\n\n */\nexport var updateTbItemsStatus = 'updateTbItemsStatus';\n/**\n * @hidden\n\n */\nexport var showLinkDialog = 'showLinkDialog';\n/**\n * @hidden\n\n */\nexport var closeLinkDialog = 'closeLinkDialog';\n/**\n * @hidden\n\n */\nexport var showImageDialog = 'showImageDialog';\n/**\n * @hidden\n\n */\nexport var closeImageDialog = 'closeImageDialog';\n/**\n * @hidden\n\n */\nexport var showTableDialog = 'showTableDialog';\n/**\n * @hidden\n\n */\nexport var closeTableDialog = 'closeTableDialog';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, findDirection, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\n/** @private */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x) || tempPoint.x === '') {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw) {\n remove(chart.svgObject);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n innerHTML: text,\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerHTML = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/** @private */\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n return axis.isInversed ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n *\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isInversed ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.opposedPosition;\n var anchor = isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? axis.endLabel : axis.startLabel, axis.labelStyle);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n parent.appendChild(chart.renderer.drawPath(new PathOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i, chart.themeStyle.crosshairFill, 2, chart.themeStyle.crosshairFill, 1, null, direction)));\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? axis.endLabel : axis.startLabel), { color: chart.themeStyle.crosshairLabel, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabel, parent);\n }\n return parent;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series) {\n var rect = series.clipRect;\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 2592000000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n *\n * @param {number} currentTime currentTime\n * @param {number} startValue startValue of the animation\n * @param {number} endValue endValue of the animation\n * @param {number} duration duration of the animation\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n *\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n element.style.visibility = '';\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path\n *\n * @param {Element} element element to be animated\n * @param {string} direction current direction of the path\n * @param {boolean} redraw chart redraw\n * @param {string} previousDirection previous direction of the path\n * @param {number} animateDuration animateDuration of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element\n *\n * @param {boolean} redraw chart redraw value\n * @param {BaseAttibutes} options element options\n * @param {SvgRenderer} renderer svg renderer values\n * @param {string} clipPath clipPath of the element\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @returns {boolean} It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n *\n * @param {Axis} axis axis model\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n *\n * @returns {void} It returns desired interval count.\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n *\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element\n *\n * @param {boolean} isCanvas canvas mode value\n * @param {Element} parent parent element\n * @param {Element} childElement childElement element\n * @param {boolean} redraw chart redraw value\n * @param {boolean} isAnimate animation value\n * @param {string} x x position\n * @param {string} y y position\n * @param {ChartLocation} start start location value\n * @param {string} direction direction of the element\n * @param {boolean} forceAnimate forceAnimate\n * @param {boolean} isRect isRect\n * @param {Rect} previousRect previousRect\n * @param {number} animateDuration duration of the animation\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (isCanvas) {\n return null;\n }\n var existChild = parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if (labelFormat && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n case 'SplineRangeArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n // eslint-disable-next-line no-case-declarations\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/** @private */\nexport function lineBreakLabelTrim(maxWidth, text, font) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n renderOptions = {\n 'id': option.id,\n 'x': option.x,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n htmlObject.style.textAnchor = option.anchor;\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font).height);\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': option.x, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.availableSize.width;\n containerHeight = chart.stockChart.availableSize.height;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n}\n/**\n * To create svg element.\n *\n * @param {Chart} chart chart instance\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n}\n/**\n * To calculate chart title and height\n *\n * @param {string} title text of the title\n * @param {FontModel} style style of the title\n * @param {number} width width of the title\n */\nexport function getTitle(title, style, width) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow\n */\nexport function textWrap(currentLabel, maximumWidth, font) {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/** @private */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/** @private */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/** @private */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/** @private */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\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 * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLS_RTE = 'e-richtexteditor';\n/**\n * @hidden\n\n */\nexport var CLS_RTL = 'e-rtl';\n/**\n * @hidden\n\n */\nexport var CLS_CONTENT = 'e-content';\n/**\n * @hidden\n\n */\nexport var CLS_DISABLED = 'e-disabled';\n/**\n * @hidden\n\n */\nexport var CLS_SCRIPT_SHEET = 'rte-iframe-script-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_STYLE_SHEET = 'rte-iframe-style-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_TOOLBAR = 'e-rte-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FIXED = 'e-rte-tb-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FLOAT = 'e-rte-tb-float';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ABS_FLOAT = 'e-rte-tb-abs-float';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE = 'e-rte-inline';\n/**\n * @hidden\n\n */\nexport var CLS_TB_INLINE = 'e-rte-tb-inline';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_EXPAND_TB = 'e-rte-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_FULL_SCREEN = 'e-rte-full-screen';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_TB = 'e-rte-quick-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_POP = 'e-rte-pop';\n/**\n * @hidden\n\n */\nexport var CLS_TB_STATIC = 'e-tb-static';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_POP = 'e-rte-quick-popup';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_DROPDOWN = 'e-quick-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_IMAGE_POP = 'e-rte-image-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_POP = 'e-rte-inline-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_DROPDOWN = 'e-rte-inline-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_POPUP = 'e-rte-dropdown-popup';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ICONS = 'e-rte-dropdown-icons';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ITEMS = 'e-rte-dropdown-items';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_BTN = 'e-rte-dropdown-btn';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CONTENT = 'e-rte-content';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ITEM = 'e-toolbar-item';\n/**\n * @hidden\n\n */\nexport var CLS_TB_EXTENDED = 'e-toolbar-extended';\n/**\n * @hidden\n\n */\nexport var CLS_TB_WRAP = 'e-toolbar-wrapper';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP = 'e-popup';\n/**\n * @hidden\n\n */\nexport var CLS_SEPARATOR = 'e-separator';\n/**\n * @hidden\n\n */\nexport var CLS_MINIMIZE = 'e-minimize';\n/**\n * @hidden\n\n */\nexport var CLS_MAXIMIZE = 'e-maximize';\n/**\n * @hidden\n\n */\nexport var CLS_BACK = 'e-back';\n/**\n * @hidden\n\n */\nexport var CLS_SHOW = 'e-show';\n/**\n * @hidden\n\n */\nexport var CLS_HIDE = 'e-hide';\n/**\n * @hidden\n\n */\nexport var CLS_VISIBLE = 'e-visible';\n/**\n * @hidden\n\n */\nexport var CLS_FOCUS = 'e-focused';\n/**\n * @hidden\n\n */\nexport var CLS_RM_WHITE_SPACE = 'e-remove-white-space';\n/**\n * @hidden\n\n */\nexport var CLS_IMGRIGHT = 'e-imgright';\n/**\n * @hidden\n\n */\nexport var CLS_IMGLEFT = 'e-imgleft';\n/**\n * @hidden\n\n */\nexport var CLS_IMGCENTER = 'e-imgcenter';\n/**\n * @hidden\n\n */\nexport var CLS_IMGBREAK = 'e-imgbreak';\n/**\n * @hidden\n\n */\nexport var CLS_CAPTION = 'e-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CAPTION = 'e-rte-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_CAPINLINE = 'e-caption-inline';\n/**\n * @hidden\n\n */\nexport var CLS_IMGINLINE = 'e-imginline';\n/**\n * @hidden\n\n */\nexport var CLS_COUNT = 'e-rte-character-count';\n/**\n * @hidden\n\n */\nexport var CLS_WARNING = 'e-warning';\n/**\n * @hidden\n\n */\nexport var CLS_ERROR = 'e-error';\n/**\n * @hidden\n\n */\nexport var CLS_ICONS = 'e-icons';\n/**\n * @hidden\n\n */\nexport var CLS_ACTIVE = 'e-active';\n/**\n * @hidden\n\n */\nexport var CLS_EXPAND_OPEN = 'e-expand-open';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_ELEMENTS = 'e-rte-elements';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BTN = 'e-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_HR_SEPARATOR = 'e-rte-horizontal-separator';\n/**\n * @hidden\n\n */\nexport var CLS_TB_IOS_FIX = 'e-tbar-ios-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_LIST_PRIMARY_CONTENT = 'e-rte-list-primary-content';\n/**\n * @hidden\n\n */\nexport var CLS_NUMBERFORMATLIST_TB_BTN = 'e-rte-numberformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BULLETFORMATLIST_TB_BTN = 'e-rte-bulletformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_FORMATS_TB_BTN = 'e-formats-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_NAME_TB_BTN = 'e-font-name-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_SIZE_TB_BTN = 'e-font-size-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_TARGET = 'e-rte-fontcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_TARGET = 'e-rte-backgroundcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_CONTENT = 'e-rte-color-content';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_DROPDOWN = 'e-rte-fontcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_DROPDOWN = 'e-rte-backgroundcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_PALETTE = 'e-rte-square-palette';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_PICKER = 'e-rte-fontcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_PICKER = 'e-rte-backgroundcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_READONLY = 'e-rte-readonly';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_SEL = 'e-cell-select';\n/**\n * @hidden\n\n */\nexport var CLS_TB_DASH_BOR = 'e-dashed-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ALT_BOR = 'e-alternate-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_COL_RES = 'e-column-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ROW_RES = 'e-row-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BOX_RES = 'e-table-box';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_HIDDEN = 'e-rte-hidden';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_KEEP_FORMAT = 'e-rte-keepformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_REMOVE_FORMAT = 'e-rte-removeformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_PLAIN_FORMAT = 'e-rte-plainformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_OK = 'e-rte-pasteok';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_CANCEL = 'e-rte-pastecancel';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_MIN_HEIGHT = 'e-rte-dialog-minheight';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_HANDLE = 'e-resize-handle';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_EAST = 'e-south-east';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_IMAGE = 'e-rte-image';\n/**\n * @hidden\n\n */\nexport var CLS_RESIZE = 'e-resize';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_FOCUS = 'e-img-focus';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DRAG_IMAGE = 'e-rte-drag-image';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_UPLOAD_POPUP = 'e-rte-upload-popup';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP_OPEN = 'e-popup-open';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_RESIZE = 'e-img-resize';\n/**\n * @hidden\n\n */\nexport var CLS_DROPAREA = 'e-droparea';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_INNER = 'e-img-inner';\n/**\n * @hidden\n\n */\nexport var CLS_UPLOAD_FILES = 'e-upload-files';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_UPLOAD = 'e-rte-dialog-upload';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_CNT = 'e-rte-resize';\n/**\n * @hidden\n\n */\nexport var CLS_CUSTOM_TILE = 'e-custom-tile';\n/**\n * @hidden\n\n */\nexport var CLS_NOCOLOR_ITEM = 'e-nocolor-item';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE = 'e-rte-table';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_BORDER = 'e-rte-table-border';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TABLE_RESIZE = 'e-rte-table-resize';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_FIXED_TB_EXPAND = 'e-rte-fixed-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TB_ENABLED = 'e-rte-toolbar-enabled';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.e-gridcontent')) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\n var fileName = getValue('name', item);\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + fPath.replace(/\\\\/g, '/') + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length == 0 && parent.dragData && parent.dragData.length == 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.setAttribute('style', colors[i].style);\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, tipRadius) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n tipRadius = tipRadius ? tipRadius : 0;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + tipRadius) + ' ' + (height + arrowPadding - tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (height + arrowPadding) + ' ' + (tipX - tipRadius) +\n ' ' + (height + arrowPadding - tipRadius);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height +\n ' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX - tipRadius) + ' ' + (arrowLocation.y + tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (arrowLocation.y) + ' ' + (tipX + tipRadius) + ' ' + (arrowLocation.y + tipRadius);\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY) + ' L' + ' '\n + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (width + arrowPadding) + ' ' + (tipY) + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (startX - arrowPadding) + ' ' + (tipY) + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n parent.appendChild(htmlObject);\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind') && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n var x = (this.marginX * 2) + (size / 2) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : 0)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n this.tipRadius = 1;\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n }\n }\n if (this.header !== '') {\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, this.textStyle).height +\n (this.marginY * 2) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : 0); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.tipRadius));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n pathElement.setAttribute('stroke', this.border.color);\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font).width + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '13px';\n var fontWeight = 'Normal';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, null, groupElement);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height);\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, '
\\u200E:
')\n .split('
');\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'bold';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === 'bold' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, font).width;\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = 'inherit';\n isRow = false;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = 'bold';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() != \"[object HTMLUnknownElement]\";\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x -= (tooltipRect.width + 4 * this.padding);\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (arrowLocation.x + this.arrowPadding / 2 > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding / 2;\n tipLocation.x = width;\n this.tipRadius = 0;\n }\n if (arrowLocation.x - this.arrowPadding / 2 < this.rx) {\n arrowLocation.x = this.rx + this.arrowPadding / 2;\n tipLocation.x = 0;\n this.tipRadius = 0;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding / 2 > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding / 2;\n tipLocation.y = height;\n this.tipRadius = 0;\n }\n if (arrowLocation.y - this.arrowPadding / 2 < this.ry) {\n arrowLocation.y = this.ry + this.arrowPadding / 2;\n tipLocation.y = 0;\n this.tipRadius = 0;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity')) || 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '13px', fontWeight: 'Normal', color: null, fontStyle: 'Normal', fontFamily: 'Segoe UI' }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(12)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696'\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A'\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: 'rgba(0, 0, 0, 0.9)',\n tooltipBoldLabel: 'rgba(255, 255, 255)',\n tooltipLightLabel: 'rgba(255, 255, 255, 0.9)',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)'\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n };\n break;\n default:\n style = {\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff'\n };\n break;\n }\n return style;\n}\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } 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 * Process the given records based on the datamanager string.\n * @param {string} datamanager\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n var result = sampledata.executeLocal(query);\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition == 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition == 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition == 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","/**\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","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport enum LogLevel {\r\n /** Log level for very low severity diagnostic messages. */\r\n Trace = 0,\r\n /** Log level for low severity diagnostic messages. */\r\n Debug = 1,\r\n /** Log level for informational diagnostic messages. */\r\n Information = 2,\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n Warning = 3,\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n Error = 4,\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n Critical = 5,\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n None = 6,\r\n}\r\n\r\n/** An abstraction that provides a sink for diagnostic messages. */\r\nexport interface ILogger {\r\n /** Called by the framework to emit a diagnostic message.\r\n *\r\n * @param {LogLevel} logLevel The severity level of the message.\r\n * @param {string} message The message.\r\n */\r\n log(logLevel: LogLevel, message: string): void;\r\n}\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\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 _this.isDynamicDataChange = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\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 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 var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.renderReactTemplates();\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 DropDownBase.prototype.getTextByValue = function (value) {\n var 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') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\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 else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n };\n DropDownBase.prototype.renderSelectElement = function (selectElement, listData) {\n var isDataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (this.isDynamicDataChange && (this.dataSource === null || (this.dataSource instanceof Array && this.dataSource.length === 0))) {\n selectElement.innerHTML = '';\n }\n if (isDataSource) {\n selectElement.innerHTML = '';\n for (var i = 0; i < listData.length; i++) {\n var option = this.createElement('option');\n option.value = listData[i][this.fields.value];\n option.text = listData[i][this.fields.text];\n selectElement.appendChild(option);\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 * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\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 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 *\n * @private\n * @returns {void}\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 * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\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 /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\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 * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\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 * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return 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 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 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 = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\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 = 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 DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return 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 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 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 /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\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 * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\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 * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\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 * @returns {void}\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 * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\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 * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\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 *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @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 /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {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 __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","/**\n * Defines util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined as isNOU, addClass, removeClass, selectAll, createElement } from '@syncfusion/ej2-base';\nimport { Browser, detach, SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nimport * as classes from '../base/classes';\nimport * as model from '../models/items';\nimport { toolsLocale, fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale } from '../models/default-locale';\nvar undoRedoItems = ['Undo', 'Redo'];\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @param {string} val - specifies the string value\n * @param {string} items - specifies the value\n * @returns {number} - returns the number value\n * @hidden\n */\nexport function getIndex(val, items) {\n var index = -1;\n items.some(function (item, i) {\n if (typeof item === 'string' && val === item.toLocaleLowerCase()) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n}\n/**\n * @param {Element} element - specifies the element\n * @param {string} className - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function hasClass(element, className) {\n var hasClass = false;\n if (element.classList.contains(className)) {\n hasClass = true;\n }\n return hasClass;\n}\n/**\n * @param {IDropDownItemModel} items - specifies the item model\n * @param {string} value - specifies the string value\n * @param {string} type - specifies the string value\n * @param {string} returnType - specifies the return type\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getDropDownValue(items, value, type, returnType) {\n var data;\n var result;\n for (var k = 0; k < items.length; k++) {\n if (type === 'value' && items[k].value.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'text' && items[k].text.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'subCommand' && items[k].subCommand.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n }\n if (!isNOU(data)) {\n switch (returnType) {\n case 'text':\n result = data.text;\n break;\n case 'value':\n result = data.value;\n break;\n case 'iconCss':\n result = data.iconCss;\n break;\n }\n }\n return result;\n}\n/**\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getFormattedFontSize(value) {\n if (isNOU(value)) {\n return '';\n }\n return value;\n}\n/**\n * @param {MouseEvent} e - specifies the mouse event\n * @param {HTMLElement} parentElement - specifies the parent element\n * @param {boolean} isIFrame - specifies the boolean value\n * @returns {number} - returns the number\n * @hidden\n */\nexport function pageYOffset(e, parentElement, isIFrame) {\n var y = 0;\n if (isIFrame) {\n y = window.pageYOffset + parentElement.getBoundingClientRect().top + e.clientY;\n }\n else {\n y = e.pageY;\n }\n return y;\n}\n/**\n * @param {string} item - specifies the string\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getTooltipText(item, serviceLocator) {\n var i10n = serviceLocator.getService('rteLocale');\n var itemLocale = toolsLocale[item];\n var tooltipText = i10n.getConstant(itemLocale);\n return tooltipText;\n}\n/**\n * @param {ISetToolbarStatusArgs} e - specifies the e element\n * @param {boolean} isPopToolbar - specifies the boolean value\n * @param {IRichTextEditor} self - specifies the parent element\n * @returns {void}\n * @hidden\n */\nexport function setToolbarStatus(e, isPopToolbar, self) {\n updateDropDownFontFormatLocale(self);\n var dropDown = e.dropDownModule;\n var data = e.args;\n var keys = Object.keys(e.args);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n for (var j = 0; j < e.tbItems.length; j++) {\n var item = e.tbItems[j].subCommand;\n var itemStr = item && item.toLocaleLowerCase();\n if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||\n (itemStr === 'pre' && key === 'insertcode')) {\n if (typeof data[key] === 'boolean') {\n if (data[key] === true) {\n addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n else {\n removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n }\n else if ((typeof data[key] === 'string' || data[key] === null) &&\n getIndex(key, e.parent.toolbarSettings.items) > -1) {\n var value = ((data[key]) ? data[key] : '');\n var result = '';\n switch (key) {\n case 'formats': {\n if (isNOU(dropDown.formatDropDown) || isPopToolbar ||\n (!isNOU(dropDown.formatDropDown) && dropDown.formatDropDown.isDestroyed)) {\n break;\n }\n var formatItems = e.parent.format.types;\n var formatContent = isNOU(e.parent.format.default) ? formatItems[0].text :\n e.parent.format.default;\n result = getDropDownValue(formatItems, value, 'subCommand', 'text');\n dropDown.formatDropDown.content = ('' +\n ''\n + (isNOU(result) ? formatContent : result) +\n '');\n dropDown.formatDropDown.dataBind();\n break;\n }\n case 'alignments': {\n if (isNOU(dropDown.alignDropDown) ||\n (!isNOU(dropDown.alignDropDown) && dropDown.alignDropDown.isDestroyed)) {\n break;\n }\n var alignItems = model.alignmentItems;\n result = getDropDownValue(alignItems, value, 'subCommand', 'iconCss');\n dropDown.alignDropDown.iconCss = isNOU(result) ? 'e-icons e-justify-left' : result;\n dropDown.alignDropDown.dataBind();\n break;\n }\n case 'fontname': {\n if (isNOU(dropDown.fontNameDropDown) || isPopToolbar ||\n (!isNOU(dropDown.fontNameDropDown) && dropDown.fontNameDropDown.isDestroyed)) {\n break;\n }\n var fontNameItems = e.parent.fontFamily.items;\n result = getDropDownValue(fontNameItems, value, 'value', 'text');\n var fontNameContent = isNOU(e.parent.fontFamily.default) ? fontNameItems[0].text :\n e.parent.fontFamily.default;\n var name_1 = (isNOU(result) ? fontNameContent : result);\n e.tbElements[j].title = name_1;\n dropDown.fontNameDropDown.content = ('' +\n ''\n + name_1 + '');\n dropDown.fontNameDropDown.dataBind();\n break;\n }\n case 'fontsize': {\n if (isNOU(dropDown.fontSizeDropDown) ||\n (!isNOU(dropDown.fontSizeDropDown) && dropDown.fontSizeDropDown.isDestroyed)) {\n break;\n }\n var fontSizeItems = e.parent.fontSize.items;\n var fontSizeContent = isNOU(e.parent.fontSize.default) ? fontSizeItems[1].text :\n e.parent.fontSize.default;\n result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\\s/g, '') : value), 'value', 'text');\n dropDown.fontSizeDropDown.content = ('' +\n ''\n + getFormattedFontSize(result) + '');\n dropDown.fontSizeDropDown.dataBind();\n break;\n }\n }\n }\n }\n }\n }\n}\n/**\n * @param {string} items - specifies the string value\n * @returns {string[]} - returns the array value\n * @hidden\n */\nexport function getCollection(items) {\n if (typeof items === 'object') {\n return items;\n }\n else {\n return [items];\n }\n}\n/**\n * @param {string[]} items - specifies the array of string value\n * @param {IToolbarItemModel} toolbarItems - specifies the tool bar model\n * @returns {number} - returns the number\n * @hidden\n */\nexport function getTBarItemsIndex(items, toolbarItems) {\n var itemsIndex = [];\n for (var i = 0; i < items.length; i++) {\n for (var j = 0; j < toolbarItems.length; j++) {\n if (toolbarItems[j].type === 'Separator') {\n continue;\n }\n else {\n if (items[i] === 'OrderedList' && toolbarItems[j].subCommand === 'OL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'UnorderedList' && toolbarItems[j].subCommand === 'UL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'InsertCode' && toolbarItems[j].subCommand === 'Pre') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'FileManager' && toolbarItems[j].subCommand === 'File') {\n itemsIndex.push(j);\n break;\n }\n else if (typeof (items[i]) === 'object' && items[i].command === 'Custom') {\n itemsIndex.push(i);\n break;\n }\n else if (items[i] === toolbarItems[j].subCommand) {\n itemsIndex.push(j);\n break;\n }\n }\n }\n }\n return itemsIndex;\n}\n/**\n * @param {BaseToolbar} baseToolbar - specifies the base\n * @param {boolean} undoRedoStatus - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function updateUndoRedoStatus(baseToolbar, undoRedoStatus) {\n var i = 0;\n var trgItems = getTBarItemsIndex(getCollection(undoRedoItems), baseToolbar.toolbarObj.items);\n var tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n var keys = Object.keys(undoRedoStatus);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var target = tbItems[trgItems[i]];\n if (target) {\n baseToolbar.toolbarObj.enableItems(target, undoRedoStatus[key]);\n }\n i++;\n }\n}\n/**\n * To dispatch the event manually\n *\n * @param {Element} element - specifies the element.\n * @param {string} type - specifies the string type.\n * @returns {void}\n * @hidden\n\n */\nexport function dispatchEvent(element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n}\n/**\n * To parse the HTML\n *\n * @param {string} value - specifies the string value\n * @returns {DocumentFragment} - returns the document\n * @hidden\n */\nexport function parseHtml(value) {\n var tempNode = createElement('template');\n tempNode.innerHTML = value;\n if (tempNode.content instanceof DocumentFragment) {\n return tempNode.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n}\n/**\n * @param {Document} docElement - specifies the document element\n * @param {Element} node - specifies the node\n * @returns {Node[]} - returns the node array\n * @hidden\n */\nexport function getTextNodesUnder(docElement, node) {\n var nodes = [];\n for (node = node.firstChild; node; node = node.nextSibling) {\n if (node.nodeType === 3) {\n nodes.push(node);\n }\n else {\n nodes = nodes.concat(getTextNodesUnder(docElement, node));\n }\n }\n return nodes;\n}\n/**\n * @param {IToolsItemConfigs} obj - specifies the configuration\n * @returns {void}\n * @hidden\n */\nexport function toObjectLowerCase(obj) {\n var convertedValue = {};\n var keys = Object.keys(obj);\n for (var i = 0; i < Object.keys(obj).length; i++) {\n convertedValue[keys[i].toLocaleLowerCase()] = obj[keys[i]];\n }\n return convertedValue;\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getEditValue(value, rteObj) {\n var val;\n if (value !== null && value !== '') {\n val = rteObj.enableHtmlEncode ? updateTextNode(decode(value)) : updateTextNode(value);\n rteObj.setProperties({ value: val }, true);\n }\n else {\n val = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


';\n }\n return val;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {string} - returns the string\n * @hidden\n */\nexport function updateTextNode(value) {\n var tempNode = document.createElement('div');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var paraElm = void 0;\n while (tempNode.firstChild) {\n if ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n resultElm.appendChild(paraElm);\n paraElm.appendChild(tempNode.firstChild);\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains(classes.CLS_RTE_IMAGE)) {\n imageElm[i].classList.add(classes.CLS_RTE_IMAGE);\n }\n if (!(imageElm[i].classList.contains(classes.CLS_IMGINLINE) ||\n imageElm[i].classList.contains(classes.CLS_IMGBREAK))) {\n imageElm[i].classList.add(classes.CLS_IMGINLINE);\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function isEditableValueEmpty(value) {\n return (value === '


' || value === '<p><br></p>' || value === '') ? true : false;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nexport function decode(value) {\n return value.replace(/&/g, '&').replace(/&lt;/g, '<')\n .replace(/</g, '<').replace(/&gt;/g, '>')\n .replace(/>/g, '>').replace(/ /g, ' ')\n .replace(/&nbsp;/g, ' ').replace(/"/g, '');\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} parent - specifies the rte\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function sanitizeHelper(value, parent) {\n if (parent.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n parent.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNOU(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n}\n/**\n * @param {string} dataUrl - specifies the string value\n * @returns {BaseToolbar} - returns the value\n * @hidden\n */\n//Converting the base64 url to blob\nexport function convertToBlob(dataUrl) {\n var arr = dataUrl.split(',');\n var mime = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @param {string} localeItems - specifies the locale items\n * @param {IDropDownItemModel} item - specifies the dropdown item\n * @returns {string} - returns the value\n * @hidden\n */\nexport function getLocaleFontFormat(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.value || localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @returns {void}\n * @hidden\n */\nexport function updateDropDownFontFormatLocale(self) {\n model.fontFamily.forEach(function (item, i) {\n model.fontFamily[i].text = getLocaleFontFormat(self, fontNameLocale, model.fontFamily[i]);\n });\n model.formatItems.forEach(function (item, i) {\n model.formatItems[i].text = getLocaleFontFormat(self, formatsLocale, model.formatItems[i]);\n });\n model.numberFormatList.forEach(function (item, i) {\n model.numberFormatList[i].text = getLocaleFontFormat(self, numberFormatListLocale, model.numberFormatList[i]);\n });\n model.bulletFormatList.forEach(function (item, i) {\n model.bulletFormatList[i].text = getLocaleFontFormat(self, bulletFormatListLocale, model.bulletFormatList[i]);\n });\n}\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","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","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n if (!isNullOrUndefined(data['errors'])) {\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n if (!isNullOrUndefined(data['errors'])) {\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n if (!isNullOrUndefined(data['errors'])) {\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n ;\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { 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 */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\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 *\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 isBindClearAction = args.bindClearAction;\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 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 if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\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 var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction == undefined || isBindClearAction) {\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 }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }, 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 *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} 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 *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - 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 *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} 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 *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var 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 *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} 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 *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} 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 *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} 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 *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} 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 = 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 *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} 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 = 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,\n 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 *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 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 *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\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 *\n * @param {string} 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 {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\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 *\n * @param {string} 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 {HTMLElement} 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/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * React Component Base\n */\nimport * as React from 'react';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.renderReactTemplates();\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n this.isshouldComponentUpdateCalled = true;\n if (prev !== this.props) {\n this.refreshProperties(this.props, true);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[propkey]) &&\n this.htmlattributes[propkey] !== dProps[propkey]) {\n this.htmlattributes[propkey] = dProps[propkey];\n }\n if (this.compareValues(this.props[propkey], nextProps[propkey])) {\n delete dProps[propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.element.classList.remove(this.props[propkey]);\n this.element.classList.add(dProps[propkey]);\n }\n else if (propkey !== 'disabled') {\n delete dProps[propkey];\n }\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n this.refreshChild(silent, nextProps);\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[prop];\n if (curObject[prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = [\"autocomplete\", \"dropdownlist\", \"combobox\"];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[prop] !== this.props[prop]) {\n this.htmlattributes[prop] = this.props[prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n });\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[i];\n var newProp = newProps[i];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[key];\n var newValue = newProp[key];\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !this.compareValues(newValue, oldValue)) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[key] = newValue;\n }\n }\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[i];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[key], directiveValue[key], key);\n if (compareOutput.status) {\n delete directiveValue[key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[key] = directiveValue[key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[_c1]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[_c1].key + '.' + changedProps[_c1].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[_c1].value);\n }\n else {\n extend(propInstance, changedProps[_c1].value);\n }\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && (!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true && !this.isDestroyed) {\n this.destroy();\n }\n };\n // tslint:disable:no-any \n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ;\n // tslint:disable:no-any \n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (index && _this.portals[tempPortal[index[indexCount]]].propName == propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[i].propName == propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ;\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// tslint:disable-next-line:no-any\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\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})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // tslint:disable-next-line:no-any\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, detach, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n if (component && component.isLegacyTemplate) {\n ReactDOM.render(actTemplate(actData), cEle);\n if (!element) {\n detach(cEle);\n }\n }\n else {\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * Defines types of Render\n *\n * @hidden\n\n */\nexport var RenderType;\n(function (RenderType) {\n /* eslint-disable */\n /** Defines RenderType as Toolbar */\n RenderType[RenderType[\"Toolbar\"] = 0] = \"Toolbar\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Popup */\n RenderType[RenderType[\"Popup\"] = 2] = \"Popup\";\n /** Defines RenderType as LinkToolbar */\n RenderType[RenderType[\"LinkToolbar\"] = 3] = \"LinkToolbar\";\n /** Defines RenderType as TextToolbar */\n RenderType[RenderType[\"TextToolbar\"] = 4] = \"TextToolbar\";\n /** Defines RenderType as ImageToolbar */\n RenderType[RenderType[\"ImageToolbar\"] = 5] = \"ImageToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 6] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 7] = \"TableToolbar\";\n /* eslint-enable */\n})(RenderType || (RenderType = {}));\n/**\n * Defines types to be used as Toolbar.\n */\nexport var ToolbarType;\n(function (ToolbarType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n ToolbarType[\"Expand\"] = \"Expand\";\n /** Defines ToolbarType as MultiRow */\n ToolbarType[\"MultiRow\"] = \"MultiRow\";\n /** Defines ToolbarType as Scrollable */\n ToolbarType[\"Scrollable\"] = \"Scrollable\";\n /* eslint-enable */\n})(ToolbarType || (ToolbarType = {}));\n/**\n * Defines the type of dialog, which open or close in the Rich Text Editor.\n */\nexport var DialogType;\n(function (DialogType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n DialogType[\"InsertLink\"] = \"InsertLink\";\n /** Defines ToolbarType as MultiRow */\n DialogType[\"InsertImage\"] = \"InsertImage\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'bulletChartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\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","/* eslint-disable no-inner-declarations */\nimport { 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 */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\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 *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-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 return createListFromJson(createElement, dataSource, options, 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 *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-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 *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-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 *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\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, \n // eslint-disable-next-line no-prototype-builtins\n (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 // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var 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 *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-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 *\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 *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} 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 *\n * @param {{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} 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 *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {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 *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-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 *\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\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 *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\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 // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-disable-next-line\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 // eslint-disable-next-line no-prototype-builtins\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 // eslint-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 // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\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 if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.groupTemplate);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compile(options.template);\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\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 *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\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 *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\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 // eslint-disable-next-line @typescript-eslint/ban-types\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 *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\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","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION: string = \"0.0.0-DEV_BUILD\";\r\n\r\n/** @private */\r\nexport class Arg {\r\n public static isRequired(val: any, name: string): void {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n public static isNotEmpty(val: string, name: string): void {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n\r\n public static isIn(val: any, values: any, name: string): void {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class Platform {\r\n public static get isBrowser(): boolean {\r\n return typeof window === \"object\";\r\n }\r\n\r\n public static get isWebWorker(): boolean {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n\r\n public static get isNode(): boolean {\r\n return !this.isBrowser && !this.isWebWorker;\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getDataDetail(data: any, includeContent: boolean): string {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n } else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n\r\n/** @private */\r\nexport function formatArrayBuffer(data: ArrayBuffer): string {\r\n const view = new Uint8Array(data);\r\n\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n\r\n/** @private */\r\nexport async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string, accessTokenFactory: (() => string | Promise) | undefined,\r\n content: string | ArrayBuffer, logMessageContent: boolean, withCredentials: boolean, defaultHeaders: MessageHeaders): Promise {\r\n let headers = {};\r\n if (accessTokenFactory) {\r\n const token = await accessTokenFactory();\r\n if (token) {\r\n headers = {\r\n [\"Authorization\"]: `Bearer ${token}`,\r\n };\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, logMessageContent)}.`);\r\n\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...defaultHeaders},\r\n responseType,\r\n withCredentials,\r\n });\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n\r\n/** @private */\r\nexport function createLogger(logger?: ILogger | LogLevel) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n\r\n if ((logger as ILogger).log) {\r\n return logger as ILogger;\r\n }\r\n\r\n return new ConsoleLogger(logger as LogLevel);\r\n}\r\n\r\n/** @private */\r\nexport class SubjectSubscription implements ISubscription {\r\n private subject: Subject;\r\n private observer: IStreamSubscriber;\r\n\r\n constructor(subject: Subject, observer: IStreamSubscriber) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n\r\n public dispose(): void {\r\n const index: number = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class ConsoleLogger implements ILogger {\r\n private readonly minimumLogLevel: LogLevel;\r\n\r\n // Public for testing purposes.\r\n public outputConsole: {\r\n error(message: any): void,\r\n warn(message: any): void,\r\n info(message: any): void,\r\n log(message: any): void,\r\n };\r\n\r\n constructor(minimumLogLevel: LogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n this.outputConsole = console;\r\n }\r\n\r\n public log(logLevel: LogLevel, message: string): void {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.outputConsole.error(`[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`);\r\n break;\r\n case LogLevel.Warning:\r\n this.outputConsole.warn(`[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`);\r\n break;\r\n case LogLevel.Information:\r\n this.outputConsole.info(`[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.outputConsole.log(`[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getUserAgentHeader(): [string, string] {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [ userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion()) ];\r\n}\r\n\r\n/** @private */\r\nexport function constructUserAgent(version: string, os: string, runtime: string, runtimeVersion: string | undefined): string {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent: string = \"Microsoft SignalR/\";\r\n\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n } else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n\r\n userAgent += `${runtime}`;\r\n\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n } else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n\r\nfunction getOsName(): string {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\nfunction getRuntimeVersion(): string | undefined {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getRuntime(): string {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n } else {\r\n return \"Browser\";\r\n }\r\n}\r\n","/**\n * Constant values for Common\n */\n/**\n * Keydown event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN = 'keydown';\n/**\n * Undo and Redo action HTML plugin events\n *\n * @hidden\n */\nexport var ACTION = 'action';\n/**\n * Formats plugin events\n *\n * @hidden\n */\nexport var FORMAT_TYPE = 'format-type';\n/**\n * Keydown handler event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN_HANDLER = 'keydown-handler';\n/**\n * List plugin events\n *\n * @hidden\n */\nexport var LIST_TYPE = 'list-type';\n/**\n * Keyup handler event trigger\n *\n * @hidden\n */\nexport var KEY_UP_HANDLER = 'keyup-handler';\n/**\n * Keyup event trigger\n *\n * @hidden\n */\nexport var KEY_UP = 'keyup';\n/**\n * Model changed plugin event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED_PLUGIN = 'model_changed_plugin';\n/**\n * Model changed event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED = 'model_changed';\n/**\n * PasteCleanup plugin for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP_PLUGIN = 'ms_word_cleanup_plugin';\n/**\n * PasteCleanup for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP = 'ms_word_cleanup';\n/**\n* ActionBegin event callback\n*\n* @hidden\n*/\nexport var ON_BEGIN = 'onBegin';\n/**\n* Callback for spacelist action\n*\n* @hidden\n*/\nexport var SPACE_ACTION = 'actionBegin';\n","import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Trim')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Configures the ToolTips in the chart.\n *\n * @public\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex(Theme.tooltipLabelFont, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], TooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\n","/* eslint-disable */\n/**\n * Export items model\n */\nexport var templateItems = ['alignments', 'formats', 'fontname', 'fontsize', 'fontcolor', 'backgroundcolor', 'align', 'display', 'tablerows', 'tablecolumns', 'tablecell', 'tablecellhorizontalalign', 'tablecellverticalalign', 'styles', 'numberformatlist', 'bulletformatlist'];\nexport var tools = {\n 'alignments': {\n 'id': 'Alignments',\n 'icon': 'e-alignments',\n 'tooltip': 'Alignments',\n 'command': 'Alignments',\n 'subCommand': 'Alignments'\n },\n 'justifyleft': {\n 'id': 'JustifyLeft',\n 'icon': 'e-justify-left',\n 'tooltip': 'JustifyLeft',\n 'command': 'Alignments',\n 'subCommand': 'JustifyLeft'\n },\n 'justifycenter': {\n 'id': 'JustifyCenter',\n 'icon': 'e-justify-center',\n 'tooltip': 'JustifyCenter',\n 'command': 'Alignments',\n 'subCommand': 'JustifyCenter'\n },\n 'justifyright': {\n 'id': 'JustifyRight',\n 'icon': 'e-justify-right',\n 'tooltip': 'JustifyRight',\n 'command': 'Alignments',\n 'subCommand': 'JustifyRight'\n },\n 'justifyfull': {\n 'id': 'JustifyFull',\n 'icon': 'e-justify-full',\n 'tooltip': 'JustifyFull',\n 'command': 'Alignments',\n 'subCommand': 'JustifyFull'\n },\n 'fontname': {\n 'id': 'FontName',\n 'icon': 'e-font-name',\n 'tooltip': 'Font Name',\n 'command': 'Font',\n 'subCommand': 'FontName'\n },\n 'fontsize': {\n 'id': 'FontSize',\n 'icon': 'e-font-size',\n 'tooltip': 'Font Size',\n 'command': 'Font',\n 'subCommand': 'FontSize'\n },\n 'fontcolor': {\n 'id': 'FontColor',\n 'icon': 'e-font-color',\n 'tooltip': 'Font Color',\n 'command': 'Font',\n 'subCommand': 'FontColor',\n 'value': '#ff0000ff'\n },\n 'backgroundcolor': {\n 'id': 'BackgroundColor',\n 'icon': 'e-background-color',\n 'tooltip': 'Background Color',\n 'command': 'Font',\n 'subCommand': 'BackgroundColor',\n 'value': '#ffff00ff'\n },\n 'bold': {\n 'id': 'Bold',\n 'icon': 'e-bold',\n 'tooltip': 'Bold',\n 'command': 'Style',\n 'subCommand': 'Bold'\n },\n 'italic': {\n 'id': 'Italic',\n 'icon': 'e-italic',\n 'tooltip': 'Italic',\n 'command': 'Style',\n 'subCommand': 'Italic'\n },\n 'underline': {\n 'id': 'Underline',\n 'icon': 'e-underline',\n 'tooltip': 'Underline',\n 'command': 'Style',\n 'subCommand': 'Underline'\n },\n 'strikethrough': {\n 'id': 'StrikeThrough',\n 'icon': 'e-strike-through',\n 'tooltip': 'StrikeThrough',\n 'command': 'Style',\n 'subCommand': 'StrikeThrough'\n },\n 'clearformat': {\n 'id': 'ClearFormat',\n 'icon': 'e-clear-format',\n 'tooltip': 'Clear Format',\n 'command': 'Clear',\n 'subCommand': 'ClearFormat'\n },\n 'clearall': {\n 'id': 'ClearAll',\n 'icon': 'e-clear-all',\n 'tooltip': 'Clear All',\n 'command': 'Clear',\n 'subCommand': 'ClearAll'\n },\n 'cut': {\n 'id': 'Cut',\n 'icon': 'e-cut',\n 'tooltip': 'Cut',\n 'command': 'ClipBoard',\n 'subCommand': 'Cut'\n },\n 'copy': {\n 'id': 'Copy',\n 'icon': 'e-copy',\n 'tooltip': 'Copy',\n 'command': 'ClipBoard',\n 'subCommand': 'Copy'\n },\n 'paste': {\n 'id': 'Paste',\n 'icon': 'e-paste',\n 'tooltip': 'Paste',\n 'command': 'ClipBoard',\n 'subCommand': 'Paste'\n },\n 'unorderedlist': {\n 'id': 'UnorderedList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bulleted List',\n 'command': 'Lists',\n 'subCommand': 'UL'\n },\n 'orderedlist': {\n 'id': 'OrderedList',\n 'icon': 'e-order-list',\n 'tooltip': 'Numbered List',\n 'command': 'Lists',\n 'subCommand': 'OL'\n },\n 'numberformatlist': {\n 'id': 'NumberFormatList',\n 'icon': 'e-order-list',\n 'tooltip': 'NumberFormatList',\n 'command': 'NumberFormatList',\n 'subCommand': 'NumberFormatList'\n },\n 'bulletformatlist': {\n 'id': 'BulletFormatList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'BulletFormatList',\n 'command': 'BulletFormatList',\n 'subCommand': 'BulletFormatList'\n },\n 'indent': {\n 'id': 'Indent',\n 'icon': 'e-indent',\n 'tooltip': 'Increase Indent',\n 'command': 'Indents',\n 'subCommand': 'Indent'\n },\n 'outdent': {\n 'id': 'Outdent',\n 'icon': 'e-outdent',\n 'tooltip': 'Decrease Indent',\n 'command': 'Indents',\n 'subCommand': 'Outdent'\n },\n 'undo': {\n 'id': 'Undo',\n 'icon': 'e-undo',\n 'tooltip': 'Undo',\n 'command': 'Actions',\n 'subCommand': 'Undo'\n },\n 'redo': {\n 'id': 'Redo',\n 'icon': 'e-redo',\n 'tooltip': 'Redo',\n 'command': 'Actions',\n 'subCommand': 'Redo'\n },\n 'superscript': {\n 'id': 'SuperScript',\n 'icon': 'e-super-script',\n 'tooltip': 'Superscript',\n 'command': 'Effects',\n 'subCommand': 'SuperScript'\n },\n 'subscript': {\n 'id': 'SubScript',\n 'icon': 'e-sub-script',\n 'tooltip': 'Subscript',\n 'command': 'Effects',\n 'subCommand': 'SubScript'\n },\n 'createlink': {\n 'id': 'CreateLink',\n 'icon': 'e-create-link',\n 'tooltip': 'Insert Hyperlink',\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n },\n 'openlink': {\n 'id': 'OpenLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Links',\n 'subCommand': 'OpenLink'\n },\n 'editlink': {\n 'id': 'EditLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Links',\n 'subCommand': 'EditLink'\n },\n 'removelink': {\n 'id': 'RemoveLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Links',\n 'subCommand': 'RemoveLink'\n },\n 'image': {\n 'id': 'Image',\n 'icon': 'e-image',\n 'tooltip': 'Insert Image',\n 'command': 'Images',\n 'subCommand': 'Image'\n },\n 'filemanager': {\n 'id': 'FileManager',\n 'icon': 'e-rte-file-manager',\n 'tooltip': 'File Manager',\n 'command': 'Files',\n 'subCommand': 'File'\n },\n 'createtable': {\n 'id': 'CreateTable',\n 'icon': 'e-create-table',\n 'tooltip': 'Create Table',\n 'command': 'Table',\n 'subCommand': 'CreateTable'\n },\n 'removetable': {\n 'id': 'removeTable',\n 'icon': 'e-remove-table',\n 'tooltip': 'Remove Table',\n 'command': 'removeTable',\n 'subCommand': 'removeTable'\n },\n 'replace': {\n 'id': 'Replace',\n 'icon': 'e-replace',\n 'tooltip': 'Replace',\n 'command': 'Images',\n 'subCommand': 'Replace'\n },\n 'align': {\n 'id': 'Align',\n 'icon': 'e-align',\n 'tooltip': 'Align',\n 'command': 'Images',\n 'subCommand': 'Align'\n },\n 'caption': {\n 'id': 'Caption',\n 'icon': 'e-caption',\n 'tooltip': 'Image Caption',\n 'command': 'Images',\n 'subCommand': 'Caption'\n },\n 'remove': {\n 'id': 'Remove',\n 'icon': 'e-remove',\n 'tooltip': 'Remove',\n 'command': 'Images',\n 'subCommand': 'Remove'\n },\n 'openimagelink': {\n 'id': 'OpenImageLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Images',\n 'subCommand': 'OpenImageLink'\n },\n 'editimagelink': {\n 'id': 'EditImageLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Images',\n 'subCommand': 'EditImageLink'\n },\n 'removeimagelink': {\n 'id': 'RemoveImageLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Images',\n 'subCommand': 'RemoveImageLink'\n },\n 'insertlink': {\n 'id': 'InsertLink',\n 'icon': 'e-insert-link',\n 'tooltip': 'Insert Link',\n 'command': 'Images',\n 'subCommand': 'InsertLink'\n },\n 'display': {\n 'id': 'Display',\n 'icon': 'e-display',\n 'tooltip': 'Display',\n 'command': 'Images',\n 'subCommand': 'Display'\n },\n 'alttext': {\n 'id': 'AltText',\n 'icon': 'e-alt-text',\n 'tooltip': 'Alternative Text',\n 'command': 'Images',\n 'subCommand': 'AltText'\n },\n 'dimension': {\n 'id': 'Dimension',\n 'icon': 'e-dimension',\n 'tooltip': 'Change Size',\n 'command': 'Images',\n 'subCommand': 'Dimension'\n },\n 'fullscreen': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'View',\n 'subCommand': 'Maximize'\n },\n 'maximize': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'FullScreen',\n 'subCommand': 'Maximize'\n },\n 'minimize': {\n 'id': 'Minimize',\n 'icon': 'e-minimize',\n 'tooltip': 'Minimize',\n 'command': 'FullScreen',\n 'subCommand': 'Minimize'\n },\n 'lowercase': {\n 'id': 'LowerCase',\n 'icon': 'e-lower-case',\n 'tooltip': 'Lower Case',\n 'command': 'Casing',\n 'subCommand': 'LowerCase'\n },\n 'uppercase': {\n 'id': 'UpperCase',\n 'icon': 'e-upper-case',\n 'tooltip': 'Upper Case',\n 'command': 'Casing',\n 'subCommand': 'UpperCase'\n },\n 'print': {\n 'id': 'Print',\n 'icon': 'e-print',\n 'tooltip': 'Print',\n 'command': 'Print',\n 'subCommand': 'Print'\n },\n 'formats': {\n 'id': 'Formats',\n 'icon': 'e-formats',\n 'tooltip': 'Formats',\n 'command': 'Formats',\n 'subCommand': 'Formats'\n },\n 'sourcecode': {\n 'id': 'SourceCode',\n 'icon': 'e-source-code',\n 'tooltip': 'Source Code',\n 'command': 'SourceCode',\n 'subCommand': 'SourceCode'\n },\n 'preview': {\n 'id': 'Preview',\n 'icon': 'e-preview',\n 'tooltip': 'Preview',\n 'command': 'Preview',\n 'subCommand': 'Preview'\n },\n 'viewside': {\n 'id': 'ViewSide',\n 'icon': 'e-view-side',\n 'tooltip': 'ViewSide',\n 'command': 'ViewSide',\n 'subCommand': 'ViewSide'\n },\n 'insertcode': {\n 'id': 'InsertCode',\n 'icon': 'e-insert-code',\n 'tooltip': 'Insert Code',\n 'command': 'Formats',\n 'subCommand': 'Pre'\n },\n 'tableheader': {\n 'id': 'TableHeader',\n 'icon': 'e-table-header',\n 'tooltip': 'Table Header',\n 'command': 'Table',\n 'subCommand': 'TableHeader'\n },\n 'tableremove': {\n 'id': 'TableRemove',\n 'icon': 'e-table-remove',\n 'tooltip': 'Table Remove',\n 'command': 'Table',\n 'subCommand': 'TableRemove'\n },\n 'tablerows': {\n 'id': 'TableRows',\n 'icon': 'e-table-rows',\n 'tooltip': 'Table Rows',\n 'command': 'Table',\n 'subCommand': 'TableRows'\n },\n 'tablecolumns': {\n 'id': 'TableColumns',\n 'icon': 'e-table-columns',\n 'tooltip': 'Table Columns',\n 'command': 'Table',\n 'subCommand': 'TableColumns'\n },\n 'tablecell': {\n 'id': 'TableCell',\n 'icon': 'e-table-cell',\n 'tooltip': 'Table Cell',\n 'command': 'Table',\n 'subCommand': 'TableCell'\n },\n 'tablecellbackground': {\n 'id': 'TableCellBackground',\n 'icon': 'e-table-cell-background',\n 'tooltip': 'Table Cell Background',\n 'command': 'Table',\n 'subCommand': 'TableCellBackground'\n },\n 'tablecellhorizontalalign': {\n 'id': 'TableCellHorizontalAlign',\n 'icon': 'e-table-cell-horizontalAlign',\n 'tooltip': 'Table Cell HorizontalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellHorizontalAlign'\n },\n 'tablecellverticalalign': {\n 'id': 'TableCellVerticalAlign',\n 'icon': 'e-table-cell-verticalAlign',\n 'tooltip': 'Table Cell VerticalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellVerticalAlign'\n },\n 'tableeditproperties': {\n 'id': 'TableEditProperties',\n 'icon': 'e-table-edit-properties',\n 'tooltip': 'Table Edit Properties',\n 'command': 'Table',\n 'subCommand': 'TableEditProperties'\n },\n 'styles': {\n 'id': 'Styles',\n 'icon': 'e-table-styles',\n 'tooltip': 'Styles',\n 'command': 'Table',\n 'subCommand': 'Styles'\n }\n};\nvar alignmentLocale = [\n { locale: 'alignmentsDropDownLeft', value: 'JustifyLeft' },\n { locale: 'alignmentsDropDownCenter', value: 'JustifyCenter' },\n { locale: 'alignmentsDropDownRight', value: 'JustifyRight' },\n { locale: 'alignmentsDropDownJustify', value: 'JustifyFull' }\n];\nexport var alignmentItems = [\n { iconCss: 'e-icons e-justify-left', text: 'Align Left', command: 'Alignments', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', text: 'Align Center', command: 'Alignments', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', text: 'Align Right', command: 'Alignments', subCommand: 'JustifyRight' },\n { iconCss: 'e-icons e-justify-full', text: 'Align Justify', command: 'Alignments', subCommand: 'JustifyFull' }\n];\nexport var imageAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Images', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Images', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Images', subCommand: 'JustifyRight' },\n];\nvar displayLocale = [\n { locale: 'imageDisplayDropDownInline', value: 'Inline' },\n { locale: 'imageDisplayDropDownBreak', value: 'Break' }\n];\nexport var imageDisplayItems = [\n { text: 'Inline', cssClass: 'e-inline', command: 'Images', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-break', command: 'Images', subCommand: 'Break' },\n];\nexport var tableCellItems = [\n { iconCss: 'e-icons e-cell-merge', text: 'Merge cells', command: 'Table', subCommand: 'Merge' },\n { iconCss: 'e-icons e-cell-horizontal-split', text: 'Horizontal split', command: 'Table', subCommand: 'HorizontalSplit' },\n { iconCss: 'e-icons e-cell-vertical-split', text: 'Vertical split', command: 'Table', subCommand: 'VerticalSplit' },\n];\nvar tableRowLocale = [\n { locale: 'tableInsertRowDropDownBefore', value: 'InsertRowBefore' },\n { locale: 'tableInsertRowDropDownAfter', value: 'InsertRowAfter' },\n { locale: 'tableInsertRowDropDownDelete', value: 'DeleteRow' }\n];\nexport var tableRowsItems = [\n { iconCss: 'e-icons e-insert-row-before', text: 'Insert row before', command: 'Table', subCommand: 'InsertRowBefore' },\n { iconCss: 'e-icons e-insert-row-after', text: 'Insert row after', command: 'Table', subCommand: 'InsertRowAfter' },\n { iconCss: 'e-icons e-delete-row', text: 'Delete row', command: 'Table', subCommand: 'DeleteRow' },\n];\nvar tableColumnLocale = [\n { locale: 'tableInsertColumnDropDownLeft', value: 'InsertColumnLeft' },\n { locale: 'tableInsertColumnDropDownRight', value: 'InsertColumnRight' },\n { locale: 'tableInsertColumnDropDownDelete', value: 'DeleteColumn' }\n];\nexport var tableColumnsItems = [\n { iconCss: 'e-icons e-insert-column-left', text: 'Insert column left', command: 'Table', subCommand: 'InsertColumnLeft' },\n { iconCss: 'e-icons e-insert-column-right', text: 'Insert column right', command: 'Table', subCommand: 'InsertColumnRight' },\n { iconCss: 'e-icons e-delete-column', text: 'Delete column', command: 'Table', subCommand: 'DeleteColumn' },\n];\nvar tableVerticalLocale = [\n { locale: 'tableVerticalAlignDropDownTop', value: 'AlignTop' },\n { locale: 'tableVerticalAlignDropDownMiddle', value: 'AlignMiddle' },\n { locale: 'tableVerticalAlignDropDownBottom', value: 'AlignBottom' }\n];\nexport var TableCellVerticalAlignItems = [\n { iconCss: 'e-icons e-align-top', text: 'Align Top', command: 'Table', subCommand: 'AlignTop' },\n { iconCss: 'e-icons e-align-middle', text: 'Align Middle', command: 'Table', subCommand: 'AlignMiddle' },\n { iconCss: 'e-icons e-align-bottom', text: 'Align Bottom', command: 'Table', subCommand: 'AlignBottom' },\n];\nvar tableStyleLocale = [\n { locale: 'tableStylesDropDownDashedBorder', value: 'Dashed' },\n { locale: 'tableStylesDropDownAlternateRows', value: 'Alternate' }\n];\nexport var TableStyleItems = [\n { text: 'Dashed Borders', cssClass: 'e-dashed-borders', command: 'Table', subCommand: 'Dashed' },\n { text: 'Alternate Rows', cssClass: 'e-alternate-rows', command: 'Table', subCommand: 'Alternate' }\n];\nexport var predefinedItems = ['Bold', 'Italic', 'Underline', '|', 'Formats', 'Alignments',\n 'OrderedList', 'UnorderedList', '|', 'CreateLink', 'Image', '|', 'SourceCode', 'Undo', 'Redo'];\nexport var fontFamily = [\n { cssClass: 'e-segoe-ui', text: 'Segoe UI', command: 'Font', subCommand: 'FontName', value: 'Segoe UI' },\n { cssClass: 'e-arial', text: 'Arial', command: 'Font', subCommand: 'FontName', value: 'Arial,Helvetica,sans-serif' },\n { cssClass: 'e-georgia', text: 'Georgia', command: 'Font', subCommand: 'FontName', value: 'Georgia,serif' },\n { cssClass: 'e-impact', text: 'Impact', command: 'Font', subCommand: 'FontName', value: 'Impact,Charcoal,sans-serif' },\n { cssClass: 'e-tahoma', text: 'Tahoma', command: 'Font', subCommand: 'FontName', value: 'Tahoma,Geneva,sans-serif' },\n { cssClass: 'e-times-new-roman', text: 'Times New Roman', command: 'Font', subCommand: 'FontName', value: 'Times New Roman,Times,serif' },\n { cssClass: 'e-verdana', text: 'Verdana', command: 'Font', subCommand: 'FontName', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var fontSize = [\n { text: '8 pt', value: '8pt' },\n { text: '10 pt', value: '10pt' },\n { text: '12 pt', value: '12pt' },\n { text: '14 pt', value: '14pt' },\n { text: '18 pt', value: '18pt' },\n { text: '24 pt', value: '24pt' },\n { text: '36 pt', value: '36pt' }\n];\nexport var formatItems = [\n { cssClass: 'e-paragraph', text: 'Paragraph', command: 'Formats', subCommand: 'P', value: 'P' },\n { cssClass: 'e-code', text: 'Code', command: 'Formats', subCommand: 'Pre', value: 'Pre' },\n { cssClass: 'e-quote', text: 'Quotation', command: 'Formats', subCommand: 'BlockQuote', value: 'BlockQuote' },\n { cssClass: 'e-h1', text: 'Heading 1', command: 'Formats', subCommand: 'H1', value: 'H1' },\n { cssClass: 'e-h2', text: 'Heading 2', command: 'Formats', subCommand: 'H2', value: 'H2' },\n { cssClass: 'e-h3', text: 'Heading 3', command: 'Formats', subCommand: 'H3', value: 'H3' },\n { cssClass: 'e-h4', text: 'Heading 4', command: 'Formats', subCommand: 'H4', value: 'H4' }\n];\nexport var fontColor = {\n 'Custom': [\n '', '#000000', '#e7e6e6', '#44546a', '#4472c4', '#ed7d31', '#a5a5a5', '#ffc000', '#70ad47', '#ff0000',\n '#f2f2f2', '#808080', '#cfcdcd', '#d5dce4', '#d9e2f3', '#fbe4d5', '#ededed', '#fff2cc', '#e2efd9', '#ffcccc',\n '#d9d9d9', '#595959', '#aeaaaa', '#acb9ca', '#b4c6e7', '#f7caac', '#dbdbdb', '#ffe599', '#c5e0b3', '#ff8080',\n '#bfbfbf', '#404040', '#747070', '#8496b0', '#8eaadb', '#f4b083', '#c9c9c9', '#ffd966', '#a8d08d', '#ff3333',\n '#a6a6a6', '#262626', '#3b3838', '#323e4f', '#2f5496', '#c45911', '#7b7b7b', '#bf8f00', '#538135', '#b30000',\n '#7f7f7f', '#0d0d0d', '#161616', '#212934', '#1f3763', '#823b0b', '#525252', '#7f5f00', '#375623', '#660000'\n ]\n};\nexport var backgroundColor = {\n 'Custom': [\n '', '#000000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', '#ff0000', '#000080', '#800080', '#996633',\n '#f2f2f2', '#808080', '#ffffcc', '#b3ffb3', '#ccffff', '#ccccff', '#ffcccc', '#ccccff', '#ff80ff', '#f2e6d9',\n '#d9d9d9', '#595959', '#ffff80', '#80ff80', '#b3ffff', '#8080ff', '#ff8080', '#8080ff', '#ff00ff', '#dfbf9f',\n '#bfbfbf', '#404040', '#ffff33', '#33ff33', '#33ffff', '#3333ff', '#ff3333', '#0000b3', '#b300b3', '#c68c53',\n '#a6a6a6', '#262626', '#e6e600', '#00b300', '#009999', '#000099', '#b30000', '#000066', '#660066', '#86592d',\n '#7f7f7f', '#0d0d0d', '#999900', '#006600', '#006666', '#000066', '#660000', '#00004d', '#4d004d', '#734d26'\n ]\n};\nexport var numberFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'NumberFormatList', value: 'none' },\n { text: 'Number', command: 'Lists', subCommand: 'NumberFormatList', value: 'decimal' },\n { text: 'Lower Greek', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerGreek' },\n { text: 'Lower Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerRoman' },\n { text: 'Upper Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperAlpha' },\n { text: 'Lower Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerAlpha' },\n { text: 'Upper Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperRoman' },\n];\nexport var bulletFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'BulletFormatList', value: 'none' },\n { text: 'Disc', command: 'Lists', subCommand: 'BulletFormatList', value: 'disc' },\n { text: 'Circle', command: 'Lists', subCommand: 'BulletFormatList', value: 'circle' },\n { text: 'Square', command: 'Lists', subCommand: 'BulletFormatList', value: 'square' },\n];\nfunction getLocale(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\nexport function updateDropDownLocale(self) {\n alignmentItems.forEach(function (item, i) {\n alignmentItems[i].text = getLocale(self, alignmentLocale, alignmentItems[i]);\n });\n imageDisplayItems.forEach(function (item, i) {\n imageDisplayItems[i].text = getLocale(self, displayLocale, imageDisplayItems[i]);\n });\n tableRowsItems.forEach(function (item, i) {\n tableRowsItems[i].text = getLocale(self, tableRowLocale, tableRowsItems[i]);\n });\n tableColumnsItems.forEach(function (item, i) {\n tableColumnsItems[i].text = getLocale(self, tableColumnLocale, tableColumnsItems[i]);\n });\n TableCellVerticalAlignItems.forEach(function (item, i) {\n TableCellVerticalAlignItems[i].text = getLocale(self, tableVerticalLocale, TableCellVerticalAlignItems[i]);\n });\n TableStyleItems.forEach(function (item, i) {\n TableStyleItems[i].text = getLocale(self, tableStyleLocale, TableStyleItems[i]);\n });\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { getWindow, getDocument, strUndefined, strObject, strFunction, strPrototype } from './EnvUtils';\r\n\r\n// Added to help with minfication\r\nexport const Undefined = strUndefined;\r\nconst strOnPrefix = \"on\";\r\nconst strAttachEvent = \"attachEvent\";\r\nconst strAddEventHelper = \"addEventListener\";\r\nconst strDetachEvent = \"detachEvent\";\r\nconst strRemoveEventListener = \"removeEventListener\";\r\n\r\nfunction _isTypeof(value: any, theType: string): boolean {\r\n return typeof value === theType;\r\n};\r\n\r\nfunction _isUndefined(value: any): boolean {\r\n return _isTypeof(value, strUndefined) || value === undefined;\r\n};\r\n\r\nfunction _isNullOrUndefined(value: any): boolean {\r\n return (_isUndefined(value) || value === null);\r\n}\r\n\r\nfunction _hasOwnProperty(obj:any, prop:string): boolean {\r\n return obj && Object[strPrototype].hasOwnProperty.call(obj, prop);\r\n};\r\n\r\nfunction _isObject(value: any): boolean {\r\n return _isTypeof(value, strObject);\r\n};\r\n\r\nfunction _isFunction(value: any): boolean {\r\n return _isTypeof(value, strFunction);\r\n};\r\n\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nfunction _attachEvent(obj:any, eventNameWithoutOn:string, handlerRef:any, useCapture:boolean = false) {\r\n let result = false;\r\n if (!_isNullOrUndefined(obj)) {\r\n try {\r\n if (!_isNullOrUndefined(obj[strAddEventHelper])) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](eventNameWithoutOn, handlerRef, useCapture);\r\n result = true;\r\n } else if (!_isNullOrUndefined(obj[strAttachEvent])) {\r\n // IE before version 9 \r\n obj[strAttachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n result = true;\r\n }\r\n } catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event\r\n * @param handlerRef {any} - The callback function that needs to be executed for the given event\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nfunction _detachEvent(obj:any, eventNameWithoutOn:string, handlerRef:any, useCapture:boolean = false) {\r\n if (!_isNullOrUndefined(obj)) {\r\n try {\r\n if (!_isNullOrUndefined(obj[strRemoveEventListener])) {\r\n obj[strRemoveEventListener](eventNameWithoutOn, handlerRef, useCapture);\r\n } else if (!_isNullOrUndefined(obj[strDetachEvent])) {\r\n obj[strDetachEvent](strOnPrefix + eventNameWithoutOn, handlerRef);\r\n }\r\n } catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name:string):string {\r\n let value = name;\r\n let match = /([^\\w\\d_$])/g;\r\n if (match.test(name)) {\r\n value = name.replace(match, \"_\");\r\n } \r\n\r\n return value;\r\n}\r\n\r\nexport class CoreUtils {\r\n public static _canUseCookies: boolean;\r\n\r\n public static isTypeof:(value: any, theType: string) => boolean = _isTypeof;\r\n \r\n public static isUndefined:(value: any) => boolean = _isUndefined;\r\n \r\n public static isNullOrUndefined:(value: any) => boolean = _isNullOrUndefined;\r\n \r\n public static hasOwnProperty:(obj:any, prop:string) => boolean = _hasOwnProperty;\r\n \r\n /**\r\n * Checks if the passed of value is a function.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\n public static isFunction:(value: any) => boolean = _isFunction;\r\n\r\n /**\r\n * Checks if the passed of value is a function.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\n public static isObject:(value: any) => boolean = _isObject;\r\n\r\n /**\r\n * Check if an object is of type Date\r\n */\r\n public static isDate(obj: any): boolean {\r\n return Object[strPrototype].toString.call(obj) === \"[object Date]\";\r\n }\r\n\r\n /**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\n public static isString(value: any): boolean {\r\n return _isTypeof(value, \"string\");\r\n }\r\n\r\n /**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\n public static isNumber(value: any): boolean {\r\n return _isTypeof(value, \"number\");\r\n }\r\n\r\n /**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\n public static isBoolean(value: any): boolean {\r\n return _isTypeof(value, \"boolean\");\r\n }\r\n\r\n /**\r\n * Creates a new GUID.\r\n * @return {string} A GUID.\r\n */\r\n\r\n public static disableCookies() {\r\n CoreUtils._canUseCookies = false;\r\n }\r\n\r\n public static newGuid():  string  {\r\n return  'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(GuidRegex,  (c) => {\r\n const  r  =  (Math.random()  *  16  |  0),  v  =  (c  ===  'x'  ?  r  :  r  &  0x3  |  0x8);\r\n return  v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\n public static toISOString(date: Date) {\r\n if (CoreUtils.isDate(date)) {\r\n const pad = (num: number) => {\r\n let r = String(num);\r\n if (r.length === 1) {\r\n r = \"0\" + r;\r\n }\r\n\r\n return r;\r\n }\r\n\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n }\r\n\r\n /**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\n public static arrForEach(arr: T[], callbackfn: (value: T, index?: number, array?: T[]) => void, thisArg?: any):void {\r\n let len = arr.length;\r\n for (let idx = 0; idx < len; ++idx) {\r\n if (idx in arr) {\r\n callbackfn.call(thisArg || arr, arr[idx], idx, arr);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\n public static arrIndexOf(arr: T[], searchElement: T, fromIndex?: number): number {\r\n let len = arr.length;\r\n let from = fromIndex || 0;\r\n for (let lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists \r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page \r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx \r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\n public static arrMap(arr: T[], callbackfn: (value: T, index?: number, array?: T[]) => R, thisArg?: any): R[] {\r\n let len = arr.length;\r\n let _this = thisArg || arr;\r\n let results = new Array(len);\r\n \r\n for (let lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn.call(_this, arr[lp], arr);\r\n }\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency \r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\n public static arrReduce(arr: T[], callbackfn: (previousValue: T|R, currentValue?: T, currentIndex?: number, array?: T[]) => R, initialValue?: R): R {\r\n let len = arr.length;\r\n let lp = 0;\r\n let value;\r\n\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments.length >= 3) {\r\n value = arguments[2];\r\n } else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n\r\n value = arr[lp++];\r\n }\r\n\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\n public static objCreate(obj:object):any {\r\n if (obj == null) {\r\n return {};\r\n }\r\n\r\n if (!_isObject(obj) && !_isFunction(obj)) {\r\n throw new TypeError('Object prototype may only be an Object: ' + obj)\r\n }\r\n\r\n function tmpFunc() {};\r\n tmpFunc[strPrototype] = obj;\r\n\r\n return new (tmpFunc as any)();\r\n }\r\n\r\n /**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers \r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\n public static objKeys(obj: {}): string[] {\r\n var hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\r\n\r\n if (!_isFunction(obj) && (!_isObject(obj) || obj === null)) {\r\n throw new TypeError('objKeys called on non-object');\r\n }\r\n\r\n let result:string[] = [];\r\n \r\n for (let prop in obj) {\r\n if (_hasOwnProperty(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n\r\n if (hasDontEnumBug) {\r\n let dontEnums = [\r\n 'toString',\r\n 'toLocaleString',\r\n 'valueOf',\r\n 'hasOwnProperty',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable',\r\n 'constructor'\r\n ];\r\n let dontEnumsLength = dontEnums.length;\r\n \r\n for (let lp = 0; lp < dontEnumsLength; lp++) {\r\n if (_hasOwnProperty(obj, dontEnums[lp])) {\r\n result.push(dontEnums[lp]);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\n public static objDefineAccessors(target:any, prop:string, getProp?:() => T, setProp?: (v:T) => void) : boolean {\r\n let defineProp = Object[\"defineProperty\"];\r\n if (defineProp) {\r\n try {\r\n let descriptor:PropertyDescriptor = {\r\n enumerable: true,\r\n configurable: true\r\n }\r\n\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n\r\n defineProp(target, prop, descriptor);\r\n return true;\r\n } catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\n public static addEventHandler(eventName: string, callback: any): boolean {\r\n let result = false;\r\n let w = getWindow();\r\n if (w) {\r\n result = _attachEvent(w, eventName, callback);\r\n result = _attachEvent(w[\"body\"], eventName, callback) || result;\r\n }\r\n\r\n let doc = getDocument();\r\n if (doc) {\r\n result = EventHelper.Attach(doc, eventName, callback) || result;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nconst GuidRegex = /[xy]/g;\r\n\r\nexport class EventHelper {\r\n /**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\n public static Attach:(obj:any, eventNameWithoutOn:string, handlerRef:any) => boolean = _attachEvent;\r\n\r\n /**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @deprecated Use {@link EventHelper#Attach} as we are already in a class call EventHelper the extra \"Event\" just causes a larger result\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\n public static AttachEvent:(obj:any, eventNameWithoutOn:string, handlerRef:any) => boolean = _attachEvent;\r\n\r\n /**\r\n * Removes an event handler for the specified event\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\n public static Detach:(obj:any, eventNameWithoutOn:string, handlerRef:any) => void = _detachEvent;\r\n\r\n /**\r\n * Removes an event handler for the specified event\r\n * @deprecated Use {@link EventHelper#Detach} as we are already in a class call EventHelper the extra \"Event\" just causes a larger result\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\n public static DetachEvent:(obj:any, eventNameWithoutOn:string, handlerRef:any) => void = _detachEvent;\r\n}\r\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","/**\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","/**\n * Defines common util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined, Browser, createElement, detach } from '@syncfusion/ej2-base';\nimport * as classes from '../rich-text-editor/base/classes';\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @returns {void}\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {Element} editableElement - specifies the editable element.\n * @param {string} selector - specifies the string values.\n * @returns {void}\n * @hidden\n */\nexport function setEditFrameFocus(editableElement, selector) {\n if (editableElement.nodeName === 'BODY' && !isNullOrUndefined(selector)) {\n var iframe = top.window.document.querySelector(selector);\n if (!isNullOrUndefined(iframe)) {\n iframe.contentWindow.focus();\n }\n }\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n */\nexport function updateTextNode(value) {\n var tempNode = document.createElement('div');\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var paraElm = void 0;\n while (tempNode.firstChild) {\n if ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n resultElm.appendChild(paraElm);\n paraElm.appendChild(tempNode.firstChild);\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var tableElm = resultElm.querySelectorAll('table');\n for (var i = 0; i < tableElm.length; i++) {\n if (tableElm[i].getAttribute('border') === '0') {\n tableElm[i].removeAttribute('border');\n }\n var tdElm = tableElm[i].querySelectorAll('td');\n for (var j = 0; j < tdElm.length; j++) {\n if (tdElm[j].style.borderLeft === 'none') {\n tdElm[j].style.removeProperty('border-left');\n }\n if (tdElm[j].style.borderRight === 'none') {\n tdElm[j].style.removeProperty('border-right');\n }\n if (tdElm[j].style.borderBottom === 'none') {\n tdElm[j].style.removeProperty('border-bottom');\n }\n if (tdElm[j].style.borderTop === 'none') {\n tdElm[j].style.removeProperty('border-top');\n }\n if (tdElm[j].style.border === 'none') {\n tdElm[j].style.removeProperty('border');\n }\n }\n if (!tableElm[i].classList.contains(classes.CLS_TABLE)) {\n tableElm[i].classList.add(classes.CLS_TABLE);\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains(classes.CLS_RTE_IMAGE)) {\n imageElm[i].classList.add(classes.CLS_RTE_IMAGE);\n }\n if (!(imageElm[i].classList.contains(classes.CLS_IMGINLINE) ||\n imageElm[i].classList.contains(classes.CLS_IMGBREAK))) {\n imageElm[i].classList.add(classes.CLS_IMGINLINE);\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {Node} startChildNodes - specifies the node\n * @returns {void}\n * @hidden\n */\nexport function getLastTextNode(startChildNodes) {\n var finalNode = startChildNodes;\n do {\n if (finalNode.childNodes.length > 0) {\n finalNode = finalNode.childNodes[0];\n }\n } while (finalNode.childNodes.length > 0);\n return finalNode;\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultHtmlTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n unorderedlist: false,\n underline: false,\n alignments: null,\n backgroundcolor: null,\n fontcolor: null,\n fontname: null,\n fontsize: null,\n formats: null,\n createlink: false,\n insertcode: false\n };\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultMDTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n uppercase: false,\n lowercase: false,\n inlinecode: false,\n unorderedlist: false,\n formats: null\n };\n}\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","import { isValidElement, useRef, useState, useCallback, useEffect, createContext, useContext, createElement, cloneElement, Fragment } from 'react';\n\nvar isNullOrUndefined = (value) => value == null;\n\nvar isArray = (value) => Array.isArray(value);\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) && !isArray(value) && isObjectType(value);\n\nvar isHTMLElement = (value) => isObject(value) && value.nodeType === Node.ELEMENT_NODE;\n\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n};\r\nconst VALUE = 'value';\r\nconst UNDEFINED = 'undefined';\r\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n INPUT: 'input',\r\n};\r\nconst SELECT = 'select';\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\r\nconst REGEX_IS_DEEP_PROP = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\r\nconst REGEX_IS_PLAIN_PROP = /^\\w*$/;\r\nconst REGEX_PROP_NAME = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\r\nconst REGEX_ESCAPE_CHAR = /\\\\(\\\\)?/g;\r\nconst REGEX_ARRAY_FIELD_INDEX = /[\\d+]/g;\n\nfunction attachEventListeners({ field: { ref }, handleChange, isRadioOrCheckbox, }) {\r\n if (isHTMLElement(ref) && handleChange) {\r\n ref.addEventListener(isRadioOrCheckbox ? EVENTS.CHANGE : EVENTS.INPUT, handleChange);\r\n ref.addEventListener(EVENTS.BLUR, handleChange);\r\n }\r\n}\n\nvar isKey = (value) => !isArray(value) &&\r\n (REGEX_IS_PLAIN_PROP.test(value) || !REGEX_IS_DEEP_PROP.test(value));\n\nvar stringToPath = (string) => {\r\n const result = [];\r\n string.replace(REGEX_PROP_NAME, (match, number, quote, string) => {\r\n result.push(quote ? string.replace(REGEX_ESCAPE_CHAR, '$1') : number || match);\r\n });\r\n return result;\r\n};\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nvar transformToNestObject = (data) => Object.entries(data).reduce((previous, [key, value]) => {\r\n if (!isKey(key)) {\r\n set(previous, key, value);\r\n return previous;\r\n }\r\n return Object.assign(Object.assign({}, previous), { [key]: value });\r\n}, {});\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n const result = path\r\n .split(/[,[\\].]+?/)\r\n .filter(Boolean)\r\n .reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nvar focusOnErrorField = (fields, fieldErrors) => {\r\n for (const key in fields) {\r\n if (get(fieldErrors, key)) {\r\n const field = fields[key];\r\n if (field) {\r\n if (field.ref.focus) {\r\n field.ref.focus();\r\n break;\r\n }\r\n else if (field.options) {\r\n field.options[0].ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n};\n\nvar removeAllEventListeners = (ref, validateWithStateUpdate) => {\r\n if (isHTMLElement(ref) && ref.removeEventListener) {\r\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\r\n }\r\n};\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nfunction isDetached(element) {\r\n if (!element) {\r\n return true;\r\n }\r\n if (!(element instanceof HTMLElement) ||\r\n element.nodeType === Node.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n return isDetached(element.parentNode);\r\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nfunction castPath(value) {\r\n return isArray(value) ? value : stringToPath(value);\r\n}\r\nfunction baseGet(object, path) {\r\n const updatePath = isKey(path) ? [path] : castPath(path);\r\n const length = path.length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return index == length ? object : undefined;\r\n}\r\nfunction baseSlice(array, start, end) {\r\n let index = -1;\r\n let length = array.length;\r\n if (start < 0) {\r\n start = -start > length ? 0 : length + start;\r\n }\r\n end = end > length ? length : end;\r\n if (end < 0) {\r\n end += length;\r\n }\r\n length = start > end ? 0 : end - start;\r\n const result = Array(length);\r\n while (++index < length) {\r\n result[index] = array[index + start];\r\n }\r\n return result;\r\n}\r\nfunction parent(object, path) {\r\n return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\r\n}\r\nfunction baseUnset(object, path) {\r\n const updatePath = isKey(path) ? [path] : castPath(path);\r\n const childObject = parent(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n const result = !(childObject != null) || delete childObject[key];\r\n let previousObjRef = undefined;\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef = undefined;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index) {\r\n if ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (isArray(objectRef) &&\r\n !objectRef.filter((data) => isObject(data) && !isEmptyObject(data))\r\n .length)) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction unset(object, paths) {\r\n paths.forEach((path) => {\r\n baseUnset(object, path);\r\n });\r\n return object;\r\n}\n\nconst isSameRef = (fieldValue, ref) => fieldValue && fieldValue.ref === ref;\r\nfunction findRemovedFieldAndRemoveListener(fields, handleChange, field, forceDelete) {\r\n const { ref, ref: { name, type }, mutationWatcher, } = field;\r\n const fieldValue = fields[name];\r\n if (!type) {\r\n delete fields[name];\r\n return;\r\n }\r\n if ((isRadioInput(ref) || isCheckBoxInput(ref)) && fieldValue) {\r\n const { options } = fieldValue;\r\n if (isArray(options) && options.length) {\r\n options.filter(Boolean).forEach((option, index) => {\r\n const { ref, mutationWatcher } = option;\r\n if ((ref && isDetached(ref) && isSameRef(option, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n if (mutationWatcher) {\r\n mutationWatcher.disconnect();\r\n }\r\n unset(options, [`[${index}]`]);\r\n }\r\n });\r\n if (options && !options.filter(Boolean).length) {\r\n delete fields[name];\r\n }\r\n }\r\n else {\r\n delete fields[name];\r\n }\r\n }\r\n else if ((isDetached(ref) && isSameRef(fieldValue, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n if (mutationWatcher) {\r\n mutationWatcher.disconnect();\r\n }\r\n delete fields[name];\r\n }\r\n}\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: '',\r\n};\r\nvar getRadioValue = (options) => isArray(options)\r\n ? options.reduce((previous, option) => option && option.ref.checked\r\n ? {\r\n isValid: true,\r\n value: option.ref.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nvar getMultipleSelectValue = (options) => [...options]\r\n .filter(({ selected }) => selected)\r\n .map(({ value }) => value);\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isMultipleSelect = (element) => element.type === `${SELECT}-multiple`;\n\nvar isEmptyString = (value) => value === '';\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.ref.checked)\r\n .map(({ ref: { value } }) => value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n const { checked, value, attributes } = options[0].ref;\r\n return checked\r\n ? attributes && !isUndefined(attributes.value)\r\n ? isUndefined(value) || isEmptyString(value)\r\n ? validResult\r\n : { value: value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nfunction getFieldValue(fields, ref) {\r\n const { name, value } = ref;\r\n const field = fields[name];\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return field ? getRadioValue(field.options).value : '';\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return getMultipleSelectValue(ref.options);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return field ? getCheckboxValue(field.options).value : false;\r\n }\r\n return value;\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar getFieldsValues = (fields, search) => {\r\n const output = {};\r\n for (const name in fields) {\r\n if (isUndefined(search) ||\r\n (isString(search)\r\n ? name.startsWith(search)\r\n : isArray(search)\r\n ? search.find((data) => name.startsWith(data))\r\n : search && search.nest)) {\r\n output[name] = getFieldValue(fields, fields[name].ref);\r\n }\r\n }\r\n return output;\r\n};\n\nvar compareObject = (objectA = {}, objectB = {}) => {\r\n const objectAKeys = Object.keys(objectA);\r\n const objectBKeys = Object.keys(objectB);\r\n return (objectAKeys.length === objectBKeys.length &&\r\n objectAKeys.every((key) => objectB[key] && objectB[key] === objectA[key]));\r\n};\n\nvar isSameError = (error, { type, types, message }) => isObject(error) &&\r\n error.type === type &&\r\n error.message === message &&\r\n compareObject(error.types, types);\n\nfunction shouldRenderBasedOnError({ errors, name, error, validFields, fieldsWithValidation, }) {\r\n const isFieldValid = isEmptyObject(error);\r\n const isFormValid = isEmptyObject(errors);\r\n const currentFieldError = get(error, name);\r\n const existFieldError = get(errors, name);\r\n if ((isFieldValid && validFields.has(name)) ||\r\n (existFieldError && existFieldError.isManual)) {\r\n return false;\r\n }\r\n if (isFormValid !== isFieldValid ||\r\n (!isFormValid && !existFieldError) ||\r\n (isFieldValid && fieldsWithValidation.has(name) && !validFields.has(name))) {\r\n return true;\r\n }\r\n return currentFieldError && !isSameError(existFieldError, currentFieldError);\r\n}\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getValueAndMessage = (validationData) => {\r\n const isValueMessage = (value) => isObject(value) && !isRegex(value);\r\n return isValueMessage(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isMessage = (value) => isString(value) || (isObject(value) && isValidElement(value));\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) || (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => {\r\n if (validateAllFieldCriteria) {\r\n const error = errors[name];\r\n return Object.assign(Object.assign({}, error), { types: Object.assign(Object.assign({}, (error && error.types ? error.types : {})), { [type]: message || true }) });\r\n }\r\n return {};\r\n};\n\nvar validateField = async (fieldsRef, validateAllFieldCriteria, { ref, ref: { type, value, name }, options, required, maxLength, minLength, min, max, pattern, validate, }) => {\r\n var _a;\r\n const fields = fieldsRef.current;\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = isEmptyString(value);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, (exceedMax\r\n ? appendErrorsCurry(maxType, message)\r\n : appendErrorsCurry(minType, message)));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n };\r\n if (required &&\r\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\r\n (isBoolean(value) && !value) ||\r\n (isCheckBox && !getCheckboxValue(options).isValid) ||\r\n (isRadio && !getRadioValue(options).isValid))) {\r\n const { value: requiredValue, message: requiredMessage } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (requiredValue) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message: requiredMessage, ref: isRadioOrCheckbox ? (_a = fields[name].options) === null || _a === void 0 ? void 0 : _a[0].ref : ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, requiredMessage));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isNullOrUndefined(min) || !isNullOrUndefined(max)) {\r\n let exceedMax;\r\n let exceedMin;\r\n const { value: maxValue, message: maxMessage } = getValueAndMessage(max);\r\n const { value: minValue, message: minMessage } = getValueAndMessage(min);\r\n if (type === 'number' || (!type && !isNaN(value))) {\r\n const valueNumber = ref.valueAsNumber || parseFloat(value);\r\n if (!isNullOrUndefined(maxValue)) {\r\n exceedMax = valueNumber > maxValue;\r\n }\r\n if (!isNullOrUndefined(minValue)) {\r\n exceedMin = valueNumber < minValue;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(value);\r\n if (isString(maxValue)) {\r\n exceedMax = valueDate > new Date(maxValue);\r\n }\r\n if (isString(minValue)) {\r\n exceedMin = valueDate < new Date(minValue);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxMessage, minMessage, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\r\n const { value: maxLengthValue, message: maxLengthMessage, } = getValueAndMessage(maxLength);\r\n const { value: minLengthValue, message: minLengthMessage, } = getValueAndMessage(minLength);\r\n const inputLength = value.toString().length;\r\n const exceedMax = !isNullOrUndefined(maxLengthValue) && inputLength > maxLengthValue;\r\n const exceedMin = !isNullOrUndefined(minLengthValue) && inputLength < minLengthValue;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxLengthMessage, minLengthMessage);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty) {\r\n const { value: patternValue, message: patternMessage } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !patternValue.test(value)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message: patternMessage, ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, patternMessage));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n const fieldValue = getFieldValue(fields, ref);\r\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\r\n if (isFunction(validate)) {\r\n const result = await validate(fieldValue);\r\n const validateError = getValidateError(result, validateRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const [key, validateFunction] of Object.entries(validate)) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateResult = await validateFunction(fieldValue);\r\n const validateError = getValidateError(validateResult, validateRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: validateRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n return error;\r\n};\n\nconst parseErrorSchema = (error, validateAllFieldCriteria) => isArray(error.inner)\r\n ? error.inner.reduce((previous, { path, message, type }) => (Object.assign(Object.assign({}, previous), (path\r\n ? previous[path] && validateAllFieldCriteria\r\n ? {\r\n [path]: appendErrors(path, validateAllFieldCriteria, previous, type, message),\r\n }\r\n : {\r\n [path]: previous[path] || Object.assign({ message,\r\n type }, (validateAllFieldCriteria\r\n ? {\r\n types: { [type]: message || true },\r\n }\r\n : {})),\r\n }\r\n : {}))), {})\r\n : {\r\n [error.path]: { message: error.message, type: error.type },\r\n };\r\nasync function validateWithSchema(validationSchema, validateAllFieldCriteria, data, validationResolver, context) {\r\n if (validationResolver) {\r\n return validationResolver(data, context);\r\n }\r\n try {\r\n return {\r\n values: await validationSchema.validate(data, {\r\n abortEarly: false,\r\n context,\r\n }),\r\n errors: {},\r\n };\r\n }\r\n catch (e) {\r\n return {\r\n values: {},\r\n errors: transformToNestObject(parseErrorSchema(e, validateAllFieldCriteria)),\r\n };\r\n }\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nconst getPath = (path, values) => {\r\n const getInnerPath = (value, key, isObject) => {\r\n const pathWithIndex = isObject ? `${path}.${key}` : `${path}[${key}]`;\r\n return isPrimitive(value) ? pathWithIndex : getPath(pathWithIndex, value);\r\n };\r\n return isArray(values)\r\n ? values.map((value, key) => getInnerPath(value, key))\r\n : Object.entries(values).map(([key, value]) => getInnerPath(value, key, true));\r\n};\r\nvar getPath$1 = (parentPath, value) => getPath(parentPath, value).flat(Infinity);\n\nvar assignWatchFields = (fieldValues, fieldName, watchFields, inputValue, isSingleField) => {\r\n let value;\r\n watchFields.add(fieldName);\r\n if (isEmptyObject(fieldValues)) {\r\n value = undefined;\r\n }\r\n else if (!isUndefined(fieldValues[fieldName])) {\r\n value = fieldValues[fieldName];\r\n watchFields.add(fieldName);\r\n }\r\n else {\r\n value = get(transformToNestObject(fieldValues), fieldName);\r\n if (!isUndefined(value)) {\r\n getPath$1(fieldName, value).forEach((name) => watchFields.add(name));\r\n }\r\n }\r\n return isUndefined(value)\r\n ? isSingleField\r\n ? inputValue\r\n : get(inputValue, fieldName)\r\n : value;\r\n};\n\nvar skipValidation = ({ isOnChange, hasError, isBlurEvent, isOnSubmit, isReValidateOnSubmit, isOnBlur, isReValidateOnBlur, isSubmitted, }) => (isOnChange && isBlurEvent) ||\r\n (isOnSubmit && isReValidateOnSubmit) ||\r\n (isOnSubmit && !isSubmitted) ||\r\n (isOnBlur && !isBlurEvent && !hasError) ||\r\n (isReValidateOnBlur && !isBlurEvent && hasError) ||\r\n (isReValidateOnSubmit && isSubmitted);\n\nvar getFieldArrayParentName = (name) => name.substring(0, name.indexOf('['));\n\nvar getFieldValueByName = (fields, name) => {\r\n const results = transformToNestObject(getFieldsValues(fields));\r\n return name ? get(results, name, results) : results;\r\n};\n\nfunction getIsFieldsDifferent(referenceArray, differenceArray) {\r\n let isMatch = false;\r\n if (!isArray(referenceArray) ||\r\n !isArray(differenceArray) ||\r\n referenceArray.length !== differenceArray.length) {\r\n return true;\r\n }\r\n for (let i = 0; i < referenceArray.length; i++) {\r\n if (isMatch) {\r\n break;\r\n }\r\n const dataA = referenceArray[i];\r\n const dataB = differenceArray[i];\r\n if (isUndefined(dataB) ||\r\n Object.keys(dataA).length !== Object.keys(dataB).length) {\r\n isMatch = true;\r\n break;\r\n }\r\n for (const key in dataA) {\r\n if (dataA[key] !== dataB[key]) {\r\n isMatch = true;\r\n break;\r\n }\r\n }\r\n }\r\n return isMatch;\r\n}\n\nconst isMatchFieldArrayName = (name, searchName) => RegExp(`^${searchName}[\\\\d+]`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]')).test(name);\r\nvar isNameInFieldArray = (names, name) => [...names].some((current) => isMatchFieldArrayName(name, current));\n\nvar isSelectInput = (element) => element.type === `${SELECT}-one`;\n\nfunction onDomRemove(element, onDetachCallback) {\r\n const observer = new MutationObserver(() => {\r\n if (isDetached(element)) {\r\n observer.disconnect();\r\n onDetachCallback();\r\n }\r\n });\r\n observer.observe(window.document, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\n\nvar modeChecker = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n});\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nfunction useForm({ mode = VALIDATION_MODE.onSubmit, reValidateMode = VALIDATION_MODE.onChange, validationSchema, validationResolver, validationContext, defaultValues = {}, submitFocusError = true, validateCriteriaMode, } = {}) {\r\n const fieldsRef = useRef({});\r\n const errorsRef = useRef({});\r\n const touchedFieldsRef = useRef({});\r\n const fieldArrayDefaultValues = useRef({});\r\n const watchFieldsRef = useRef(new Set());\r\n const dirtyFieldsRef = useRef(new Set());\r\n const fieldsWithValidationRef = useRef(new Set());\r\n const validFieldsRef = useRef(new Set());\r\n const isValidRef = useRef(true);\r\n const defaultValuesRef = useRef(defaultValues);\r\n const defaultValuesAtRenderRef = useRef({});\r\n const isUnMount = useRef(false);\r\n const isWatchAllRef = useRef(false);\r\n const isSubmittedRef = useRef(false);\r\n const isDirtyRef = useRef(false);\r\n const submitCountRef = useRef(0);\r\n const isSubmittingRef = useRef(false);\r\n const handleChangeRef = useRef();\r\n const resetFieldArrayFunctionRef = useRef({});\r\n const validationContextRef = useRef(validationContext);\r\n const fieldArrayNamesRef = useRef(new Set());\r\n const [, render] = useState();\r\n const { isOnBlur, isOnSubmit, isOnChange } = useRef(modeChecker(mode)).current;\r\n const validateAllFieldCriteria = validateCriteriaMode === 'all';\r\n const isWindowUndefined = typeof window === UNDEFINED;\r\n const shouldValidateSchemaOrResolver = !!(validationSchema || validationResolver);\r\n const isWeb = typeof document !== UNDEFINED &&\r\n !isWindowUndefined &&\r\n !isUndefined(window.HTMLElement);\r\n const isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\r\n const readFormStateRef = useRef({\r\n dirty: !isProxyEnabled,\r\n dirtyFields: !isProxyEnabled,\r\n isSubmitted: isOnSubmit,\r\n submitCount: !isProxyEnabled,\r\n touched: !isProxyEnabled,\r\n isSubmitting: !isProxyEnabled,\r\n isValid: !isProxyEnabled,\r\n });\r\n const { isOnBlur: isReValidateOnBlur, isOnSubmit: isReValidateOnSubmit, } = useRef(modeChecker(reValidateMode)).current;\r\n validationContextRef.current = validationContext;\r\n const reRender = useCallback(() => {\r\n if (!isUnMount.current) {\r\n render({});\r\n }\r\n }, []);\r\n const shouldRenderBaseOnError = useCallback((name, error, shouldRender = false) => {\r\n let shouldReRender = shouldRender ||\r\n shouldRenderBasedOnError({\r\n errors: errorsRef.current,\r\n error,\r\n name,\r\n validFields: validFieldsRef.current,\r\n fieldsWithValidation: fieldsWithValidationRef.current,\r\n });\r\n if (isEmptyObject(error)) {\r\n if (fieldsWithValidationRef.current.has(name) ||\r\n shouldValidateSchemaOrResolver) {\r\n validFieldsRef.current.add(name);\r\n shouldReRender = shouldReRender || get(errorsRef.current, name);\r\n }\r\n errorsRef.current = unset(errorsRef.current, [name]);\r\n }\r\n else {\r\n const previousError = get(errorsRef.current, name);\r\n validFieldsRef.current.delete(name);\r\n shouldReRender =\r\n shouldReRender ||\r\n (previousError\r\n ? !isSameError(previousError, error[name])\r\n : true);\r\n set(errorsRef.current, name, error[name]);\r\n }\r\n if (shouldReRender && !isNullOrUndefined(shouldRender)) {\r\n reRender();\r\n return true;\r\n }\r\n }, [reRender, shouldValidateSchemaOrResolver]);\r\n const setFieldValue = useCallback((field, rawValue) => {\r\n const { ref, options } = field;\r\n const value = isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\r\n ? ''\r\n : rawValue;\r\n if (isRadioInput(ref) && options) {\r\n options.forEach(({ ref: radioRef }) => (radioRef.checked = radioRef.value === value));\r\n }\r\n else if (isFileInput(ref)) {\r\n if (isString(value)) {\r\n ref.value = value;\r\n }\r\n else {\r\n ref.files = value;\r\n }\r\n }\r\n else if (isMultipleSelect(ref)) {\r\n [...ref.options].forEach((selectRef) => (selectRef.selected = value.includes(selectRef.value)));\r\n }\r\n else if (isCheckBoxInput(ref) && options) {\r\n options.length > 1\r\n ? options.forEach(({ ref: checkboxRef }) => (checkboxRef.checked = value.includes(checkboxRef.value)))\r\n : (options[0].ref.checked = !!value);\r\n }\r\n else {\r\n ref.value = value;\r\n }\r\n }, [isWeb]);\r\n const setDirty = useCallback((name) => {\r\n if (!fieldsRef.current[name] ||\r\n (!readFormStateRef.current.dirty && !readFormStateRef.current.dirtyFields)) {\r\n return false;\r\n }\r\n let isFieldDirty = defaultValuesAtRenderRef.current[name] !==\r\n getFieldValue(fieldsRef.current, fieldsRef.current[name].ref);\r\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const previousDirtyFieldsLength = dirtyFieldsRef.current.size;\r\n if (isFieldArray) {\r\n const fieldArrayName = getFieldArrayParentName(name);\r\n isFieldDirty = getIsFieldsDifferent(getFieldValueByName(fieldsRef.current, fieldArrayName), get(defaultValuesRef.current, fieldArrayName));\r\n }\r\n const isDirtyChanged = (isFieldArray ? isDirtyRef.current : dirtyFieldsRef.current.has(name)) !==\r\n isFieldDirty;\r\n if (isFieldDirty) {\r\n dirtyFieldsRef.current.add(name);\r\n }\r\n else {\r\n dirtyFieldsRef.current.delete(name);\r\n }\r\n isDirtyRef.current = isFieldArray\r\n ? isFieldDirty\r\n : !!dirtyFieldsRef.current.size;\r\n return readFormStateRef.current.dirty\r\n ? isDirtyChanged\r\n : previousDirtyFieldsLength !== dirtyFieldsRef.current.size;\r\n }, []);\r\n const setInternalValues = useCallback((name, value, parentFieldName) => {\r\n const isValueArray = isArray(value);\r\n for (const key in value) {\r\n const fieldName = `${parentFieldName || name}${isValueArray ? `[${key}]` : `.${key}`}`;\r\n const field = fieldsRef.current[fieldName];\r\n if (isObject(value[key])) {\r\n setInternalValues(name, value[key], fieldName);\r\n }\r\n if (field) {\r\n setFieldValue(field, value[key]);\r\n setDirty(fieldName);\r\n }\r\n }\r\n }, [setFieldValue, setDirty]);\r\n const setInternalValue = useCallback((name, value) => {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n setFieldValue(field, value);\r\n const output = setDirty(name);\r\n if (isBoolean(output)) {\r\n return output;\r\n }\r\n }\r\n else if (!isPrimitive(value)) {\r\n setInternalValues(name, value);\r\n }\r\n }, [setDirty, setFieldValue, setInternalValues]);\r\n const executeValidation = useCallback(async (name, skipReRender) => {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n const error = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n shouldRenderBaseOnError(name, error, skipReRender ? null : false);\r\n return isEmptyObject(error);\r\n }\r\n return false;\r\n }, [shouldRenderBaseOnError, validateAllFieldCriteria]);\r\n const executeSchemaOrResolverValidation = useCallback(async (payload) => {\r\n const { errors } = await validateWithSchema(validationSchema, validateAllFieldCriteria, getFieldValueByName(fieldsRef.current), validationResolver, validationContextRef.current);\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n if (isArray(payload)) {\r\n payload.forEach((name) => {\r\n const error = get(errors, name);\r\n if (error) {\r\n set(errorsRef.current, name, error);\r\n }\r\n else {\r\n unset(errorsRef.current, [name]);\r\n }\r\n });\r\n reRender();\r\n }\r\n else {\r\n const error = get(errors, payload);\r\n shouldRenderBaseOnError(payload, (error ? { [payload]: error } : {}), previousFormIsValid !== isValidRef.current);\r\n }\r\n return isEmptyObject(errorsRef.current);\r\n }, [\r\n reRender,\r\n shouldRenderBaseOnError,\r\n validateAllFieldCriteria,\r\n validationResolver,\r\n validationSchema,\r\n ]);\r\n const triggerValidation = useCallback(async (payload) => {\r\n const fields = payload || Object.keys(fieldsRef.current);\r\n if (shouldValidateSchemaOrResolver) {\r\n return executeSchemaOrResolverValidation(fields);\r\n }\r\n if (isArray(fields)) {\r\n const result = await Promise.all(fields.map(async (data) => await executeValidation(data, true)));\r\n reRender();\r\n return result.every(Boolean);\r\n }\r\n return await executeValidation(fields);\r\n }, [\r\n executeSchemaOrResolverValidation,\r\n executeValidation,\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n ]);\r\n const isFieldWatched = (name) => isWatchAllRef.current ||\r\n watchFieldsRef.current.has(name) ||\r\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\r\n function setValue(names, valueOrShouldValidate, shouldValidate) {\r\n let shouldRender = false;\r\n const isArrayValue = isArray(names);\r\n (isArrayValue\r\n ? names\r\n : [names]).forEach((name) => {\r\n const isStringFieldName = isString(name);\r\n shouldRender =\r\n setInternalValue(isStringFieldName ? name : Object.keys(name)[0], isStringFieldName\r\n ? valueOrShouldValidate\r\n : Object.values(name)[0]) || isArrayValue\r\n ? true\r\n : isFieldWatched(name);\r\n });\r\n if (shouldRender || isArrayValue) {\r\n reRender();\r\n }\r\n if (shouldValidate || (isArrayValue && valueOrShouldValidate)) {\r\n triggerValidation(isArrayValue ? undefined : names);\r\n }\r\n }\r\n handleChangeRef.current = handleChangeRef.current\r\n ? handleChangeRef.current\r\n : async ({ type, target }) => {\r\n const name = target ? target.name : '';\r\n const fields = fieldsRef.current;\r\n const errors = errorsRef.current;\r\n const field = fields[name];\r\n const currentError = get(errors, name);\r\n let error;\r\n if (!field) {\r\n return;\r\n }\r\n const isBlurEvent = type === EVENTS.BLUR;\r\n const shouldSkipValidation = skipValidation({\r\n hasError: !!currentError,\r\n isOnChange,\r\n isBlurEvent,\r\n isOnSubmit,\r\n isReValidateOnSubmit,\r\n isOnBlur,\r\n isReValidateOnBlur,\r\n isSubmitted: isSubmittedRef.current,\r\n });\r\n const shouldUpdateDirty = setDirty(name);\r\n let shouldRender = isFieldWatched(name) || shouldUpdateDirty;\r\n if (isBlurEvent &&\r\n !get(touchedFieldsRef.current, name) &&\r\n readFormStateRef.current.touched) {\r\n set(touchedFieldsRef.current, name, true);\r\n shouldRender = true;\r\n }\r\n if (shouldSkipValidation) {\r\n return shouldRender && reRender();\r\n }\r\n if (shouldValidateSchemaOrResolver) {\r\n const { errors } = await validateWithSchema(validationSchema, validateAllFieldCriteria, getFieldValueByName(fields), validationResolver, validationContextRef.current);\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n error = (get(errors, name)\r\n ? { [name]: get(errors, name) }\r\n : {});\r\n if (previousFormIsValid !== isValidRef.current) {\r\n shouldRender = true;\r\n }\r\n }\r\n else {\r\n error = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n }\r\n if (!shouldRenderBaseOnError(name, error) && shouldRender) {\r\n reRender();\r\n }\r\n };\r\n const validateSchemaOrResolver = useCallback((values = {}) => {\r\n const fieldValues = isEmptyObject(defaultValuesRef.current)\r\n ? getFieldsValues(fieldsRef.current)\r\n : defaultValuesRef.current;\r\n validateWithSchema(validationSchema, validateAllFieldCriteria, transformToNestObject(Object.assign(Object.assign({}, fieldValues), values)), validationResolver, validationContextRef.current).then(({ errors }) => {\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n if (previousFormIsValid !== isValidRef.current) {\r\n reRender();\r\n }\r\n });\r\n }, \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [reRender, validateAllFieldCriteria, validationResolver]);\r\n const removeFieldEventListener = useCallback((field, forceDelete) => {\r\n if (handleChangeRef.current && field) {\r\n findRemovedFieldAndRemoveListener(fieldsRef.current, handleChangeRef.current, field, forceDelete);\r\n }\r\n }, []);\r\n const removeFieldEventListenerAndRef = useCallback((field, forceDelete) => {\r\n if (!field ||\r\n (field &&\r\n isNameInFieldArray(fieldArrayNamesRef.current, field.ref.name) &&\r\n !forceDelete)) {\r\n return;\r\n }\r\n removeFieldEventListener(field, forceDelete);\r\n const { name } = field.ref;\r\n errorsRef.current = unset(errorsRef.current, [name]);\r\n touchedFieldsRef.current = unset(touchedFieldsRef.current, [name]);\r\n defaultValuesAtRenderRef.current = unset(defaultValuesAtRenderRef.current, [name]);\r\n [\r\n dirtyFieldsRef,\r\n fieldsWithValidationRef,\r\n validFieldsRef,\r\n watchFieldsRef,\r\n ].forEach((data) => data.current.delete(name));\r\n if (readFormStateRef.current.isValid ||\r\n readFormStateRef.current.touched) {\r\n reRender();\r\n if (shouldValidateSchemaOrResolver) {\r\n validateSchemaOrResolver();\r\n }\r\n }\r\n }, [\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n validateSchemaOrResolver,\r\n removeFieldEventListener,\r\n ]);\r\n function clearError(name) {\r\n if (name) {\r\n unset(errorsRef.current, isArray(name) ? name : [name]);\r\n }\r\n else {\r\n errorsRef.current = {};\r\n }\r\n reRender();\r\n }\r\n const setInternalError = ({ name, type, types, message, shouldRender, }) => {\r\n const field = fieldsRef.current[name];\r\n if (!isSameError(get(errorsRef.current, name), {\r\n type,\r\n message,\r\n types,\r\n })) {\r\n set(errorsRef.current, name, {\r\n type,\r\n types,\r\n message,\r\n ref: field ? field.ref : {},\r\n isManual: true,\r\n });\r\n if (shouldRender) {\r\n reRender();\r\n }\r\n }\r\n };\r\n function setError(name, type = '', message) {\r\n if (isString(name)) {\r\n setInternalError(Object.assign(Object.assign({ name }, (isObject(type)\r\n ? {\r\n types: type,\r\n type: '',\r\n }\r\n : {\r\n type,\r\n message,\r\n })), { shouldRender: true }));\r\n }\r\n else if (isArray(name)) {\r\n name.forEach((error) => setInternalError(Object.assign({}, error)));\r\n reRender();\r\n }\r\n }\r\n function watch(fieldNames, defaultValue) {\r\n const watchFields = watchFieldsRef.current;\r\n const isDefaultValueUndefined = isUndefined(defaultValue);\r\n const combinedDefaultValues = isDefaultValueUndefined\r\n ? defaultValuesRef.current\r\n : defaultValue;\r\n const fieldValues = getFieldsValues(fieldsRef.current, fieldNames);\r\n if (isString(fieldNames)) {\r\n return assignWatchFields(fieldValues, fieldNames, watchFields, isDefaultValueUndefined\r\n ? get(combinedDefaultValues, fieldNames)\r\n : defaultValue, true);\r\n }\r\n if (isArray(fieldNames)) {\r\n return fieldNames.reduce((previous, name) => (Object.assign(Object.assign({}, previous), { [name]: assignWatchFields(fieldValues, name, watchFields, combinedDefaultValues) })), {});\r\n }\r\n isWatchAllRef.current = true;\r\n const result = (!isEmptyObject(fieldValues) && fieldValues) || combinedDefaultValues;\r\n return fieldNames && fieldNames.nest\r\n ? transformToNestObject(result)\r\n : result;\r\n }\r\n function unregister(name) {\r\n if (fieldsRef.current) {\r\n (isArray(name) ? name : [name]).forEach((fieldName) => removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true));\r\n }\r\n }\r\n function registerFieldsRef(ref, validateOptions = {}) {\r\n if (!ref.name) {\r\n // eslint-disable-next-line no-console\r\n return console.warn('Missing name @', ref);\r\n }\r\n const { name, type, value } = ref;\r\n const fieldRefAndValidationOptions = Object.assign({ ref }, validateOptions);\r\n const fields = fieldsRef.current;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\r\n let field = fields[name];\r\n let isEmptyDefaultValue = true;\r\n let isFieldArray;\r\n let defaultValue;\r\n if (isRadioOrCheckbox\r\n ? field &&\r\n isArray(field.options) &&\r\n field.options.filter(Boolean).find((option) => {\r\n return value === option.ref.value && option.ref === ref;\r\n })\r\n : field && ref === field.ref) {\r\n fields[name] = Object.assign(Object.assign({}, field), validateOptions);\r\n return;\r\n }\r\n if (type) {\r\n const mutationWatcher = onDomRemove(ref, () => removeFieldEventListenerAndRef(field));\r\n field = isRadioOrCheckbox\r\n ? Object.assign({ options: [\r\n ...((field && field.options) || []),\r\n {\r\n ref,\r\n mutationWatcher,\r\n },\r\n ], ref: { type, name } }, validateOptions) : Object.assign(Object.assign({}, fieldRefAndValidationOptions), { mutationWatcher });\r\n }\r\n else {\r\n field = fieldRefAndValidationOptions;\r\n }\r\n fields[name] = field;\r\n if (!isEmptyObject(defaultValuesRef.current)) {\r\n defaultValue = get(defaultValuesRef.current, name);\r\n isEmptyDefaultValue = isUndefined(defaultValue);\r\n isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n if (!isEmptyDefaultValue && !isFieldArray) {\r\n setFieldValue(field, defaultValue);\r\n }\r\n }\r\n if (shouldValidateSchemaOrResolver &&\r\n !isFieldArray &&\r\n readFormStateRef.current.isValid) {\r\n validateSchemaOrResolver();\r\n }\r\n else if (!isEmptyObject(validateOptions)) {\r\n fieldsWithValidationRef.current.add(name);\r\n if (!isOnSubmit && readFormStateRef.current.isValid) {\r\n validateField(fieldsRef, validateAllFieldCriteria, field).then((error) => {\r\n const previousFormIsValid = isValidRef.current;\r\n isEmptyObject(error)\r\n ? validFieldsRef.current.add(name)\r\n : (isValidRef.current = false);\r\n if (previousFormIsValid !== isValidRef.current) {\r\n reRender();\r\n }\r\n });\r\n }\r\n }\r\n if (!defaultValuesAtRenderRef.current[name] &&\r\n !(isFieldArray && isEmptyDefaultValue)) {\r\n defaultValuesAtRenderRef.current[name] = isEmptyDefaultValue ? getFieldValue(fields, field.ref) : defaultValue;\r\n }\r\n if (type) {\r\n attachEventListeners({\r\n field: isRadioOrCheckbox && field.options\r\n ? field.options[field.options.length - 1]\r\n : field,\r\n isRadioOrCheckbox: isRadioOrCheckbox || isSelectInput(ref),\r\n handleChange: handleChangeRef.current,\r\n });\r\n }\r\n }\r\n function register(refOrValidationOptions, validationOptions) {\r\n if (isWindowUndefined) {\r\n return;\r\n }\r\n if (isString(refOrValidationOptions)) {\r\n registerFieldsRef({ name: refOrValidationOptions }, validationOptions);\r\n return;\r\n }\r\n if (isObject(refOrValidationOptions) && 'name' in refOrValidationOptions) {\r\n registerFieldsRef(refOrValidationOptions, validationOptions);\r\n return;\r\n }\r\n return (ref) => ref && registerFieldsRef(ref, refOrValidationOptions);\r\n }\r\n const handleSubmit = useCallback((callback) => async (e) => {\r\n if (e) {\r\n e.preventDefault();\r\n e.persist();\r\n }\r\n let fieldErrors = {};\r\n const fields = fieldsRef.current;\r\n let fieldValues = getFieldsValues(fields);\r\n if (readFormStateRef.current.isSubmitting) {\r\n isSubmittingRef.current = true;\r\n reRender();\r\n }\r\n try {\r\n if (shouldValidateSchemaOrResolver) {\r\n const { errors, values } = await validateWithSchema(validationSchema, validateAllFieldCriteria, transformToNestObject(fieldValues), validationResolver, validationContextRef.current);\r\n errorsRef.current = errors;\r\n fieldErrors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n for (const field of Object.values(fields)) {\r\n if (field) {\r\n const { ref: { name }, } = field;\r\n const fieldError = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n if (fieldError[name]) {\r\n set(fieldErrors, name, fieldError[name]);\r\n validFieldsRef.current.delete(name);\r\n }\r\n else {\r\n if (fieldsWithValidationRef.current.has(name)) {\r\n validFieldsRef.current.add(name);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (isEmptyObject(fieldErrors)) {\r\n errorsRef.current = {};\r\n reRender();\r\n await callback(transformToNestObject(fieldValues), e);\r\n }\r\n else {\r\n errorsRef.current = fieldErrors;\r\n if (submitFocusError && isWeb) {\r\n focusOnErrorField(fields, fieldErrors);\r\n }\r\n }\r\n }\r\n finally {\r\n isSubmittedRef.current = true;\r\n isSubmittingRef.current = false;\r\n submitCountRef.current = submitCountRef.current + 1;\r\n reRender();\r\n }\r\n }, [\r\n isWeb,\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n submitFocusError,\r\n validateAllFieldCriteria,\r\n validationResolver,\r\n validationSchema,\r\n ]);\r\n const resetRefs = ({ errors, dirty, isSubmitted, touched, isValid, submitCount, dirtyFields, }) => {\r\n fieldsRef.current = {};\r\n if (!errors) {\r\n errorsRef.current = {};\r\n }\r\n if (!touched) {\r\n touchedFieldsRef.current = {};\r\n }\r\n if (!isValid) {\r\n validFieldsRef.current = new Set();\r\n fieldsWithValidationRef.current = new Set();\r\n isValidRef.current = true;\r\n }\r\n if (!dirty) {\r\n isDirtyRef.current = false;\r\n }\r\n if (!dirtyFields) {\r\n dirtyFieldsRef.current = new Set();\r\n }\r\n if (!isSubmitted) {\r\n isSubmittedRef.current = false;\r\n }\r\n if (!submitCount) {\r\n submitCountRef.current = 0;\r\n }\r\n defaultValuesAtRenderRef.current = {};\r\n fieldArrayDefaultValues.current = {};\r\n watchFieldsRef.current = new Set();\r\n isWatchAllRef.current = false;\r\n };\r\n const reset = (values, omitResetState = {}) => {\r\n if (isWeb) {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { ref, options } = field;\r\n const inputRef = isRadioOrCheckboxFunction(ref) && isArray(options)\r\n ? options[0].ref\r\n : ref;\r\n if (isHTMLElement(inputRef)) {\r\n try {\r\n inputRef.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n }\r\n if (values) {\r\n defaultValuesRef.current = values;\r\n }\r\n Object.values(resetFieldArrayFunctionRef.current).forEach((resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray());\r\n resetRefs(omitResetState);\r\n reRender();\r\n };\r\n function getValues(payload) {\r\n if (isString(payload)) {\r\n return fieldsRef.current[payload]\r\n ? getFieldValue(fieldsRef.current, fieldsRef.current[payload].ref)\r\n : get(defaultValuesRef.current, payload);\r\n }\r\n const fieldValues = getFieldsValues(fieldsRef.current);\r\n const outputValues = isEmptyObject(fieldValues)\r\n ? defaultValuesRef.current\r\n : fieldValues;\r\n return payload && payload.nest\r\n ? transformToNestObject(outputValues)\r\n : outputValues;\r\n }\r\n useEffect(() => () => {\r\n isUnMount.current = true;\r\n fieldsRef.current &&\r\n process.env.NODE_ENV === 'production' &&\r\n Object.values(fieldsRef.current).forEach((field) => removeFieldEventListenerAndRef(field, true));\r\n }, [removeFieldEventListenerAndRef]);\r\n if (!shouldValidateSchemaOrResolver) {\r\n isValidRef.current =\r\n validFieldsRef.current.size >= fieldsWithValidationRef.current.size &&\r\n isEmptyObject(errorsRef.current);\r\n }\r\n const formState = {\r\n dirty: isDirtyRef.current,\r\n dirtyFields: dirtyFieldsRef.current,\r\n isSubmitted: isSubmittedRef.current,\r\n submitCount: submitCountRef.current,\r\n touched: touchedFieldsRef.current,\r\n isSubmitting: isSubmittingRef.current,\r\n isValid: isOnSubmit\r\n ? isSubmittedRef.current && isEmptyObject(errorsRef.current)\r\n : isValidRef.current,\r\n };\r\n const commonProps = {\r\n triggerValidation,\r\n setValue: useCallback(setValue, [\r\n reRender,\r\n setInternalValue,\r\n triggerValidation,\r\n ]),\r\n register: useCallback(register, [\r\n defaultValuesRef.current,\r\n defaultValuesAtRenderRef.current,\r\n ]),\r\n unregister: useCallback(unregister, []),\r\n getValues: useCallback(getValues, []),\r\n formState: isProxyEnabled\r\n ? new Proxy(formState, {\r\n get: (obj, prop) => {\r\n if (prop in obj) {\r\n readFormStateRef.current[prop] = true;\r\n return obj[prop];\r\n }\r\n return undefined;\r\n },\r\n })\r\n : formState,\r\n };\r\n const control = Object.assign(Object.assign(Object.assign({ removeFieldEventListener,\r\n reRender }, (shouldValidateSchemaOrResolver\r\n ? { validateSchemaIsValid: validateSchemaOrResolver }\r\n : {})), { mode: {\r\n isOnBlur,\r\n isOnSubmit,\r\n isOnChange,\r\n }, reValidateMode: {\r\n isReValidateOnBlur,\r\n isReValidateOnSubmit,\r\n }, errorsRef,\r\n touchedFieldsRef,\r\n fieldsRef,\r\n isWatchAllRef,\r\n watchFieldsRef,\r\n resetFieldArrayFunctionRef,\r\n fieldArrayDefaultValues,\r\n validFieldsRef,\r\n dirtyFieldsRef,\r\n fieldsWithValidationRef,\r\n fieldArrayNamesRef,\r\n isDirtyRef,\r\n readFormStateRef,\r\n defaultValuesRef }), commonProps);\r\n return Object.assign({ watch,\r\n control,\r\n handleSubmit, reset: useCallback(reset, []), clearError: useCallback(clearError, []), setError: useCallback(setError, []), errors: errorsRef.current }, commonProps);\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst FormGlobalContext = createContext(null);\r\nfunction useFormContext() {\r\n return useContext(FormGlobalContext);\r\n}\r\nfunction FormContext(_a) {\r\n var { children, formState, errors } = _a, restMethods = __rest(_a, [\"children\", \"formState\", \"errors\"]);\r\n return (createElement(FormGlobalContext.Provider, { value: Object.assign(Object.assign({}, restMethods), { formState, errors }) }, children));\r\n}\n\nvar generateId = () => {\r\n const d = typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nconst appendId = (value, keyName) => (Object.assign({ [keyName]: generateId() }, (isObject(value) ? value : { value })));\r\nconst mapIds = (data, keyName) => (isArray(data) ? data : []).map((value) => appendId(value, keyName));\n\nvar getSortRemovedItems = (indexes, removeIndexes, updatedIndexes = [], count = 0, notFoundIndexes = []) => {\r\n for (const removeIndex of removeIndexes) {\r\n if (indexes.indexOf(removeIndex) < 0) {\r\n notFoundIndexes.push(removeIndex);\r\n }\r\n }\r\n for (const index of indexes.sort()) {\r\n if (removeIndexes.indexOf(index) > -1) {\r\n updatedIndexes.push(-1);\r\n count++;\r\n }\r\n else {\r\n updatedIndexes.push(index -\r\n count -\r\n (notFoundIndexes.length\r\n ? notFoundIndexes\r\n .map((notFoundIndex) => notFoundIndex < index)\r\n .filter(Boolean).length\r\n : 0));\r\n }\r\n }\r\n return updatedIndexes;\r\n};\n\nconst removeAt = (data, index) => [\r\n ...data.slice(0, index),\r\n ...data.slice(index + 1),\r\n];\r\nfunction removeAtIndexes(data, index) {\r\n let k = -1;\r\n while (++k < data.length) {\r\n if (index.indexOf(k) >= 0) {\r\n delete data[k];\r\n }\r\n }\r\n return data.filter(Boolean);\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : isArray(index)\r\n ? removeAtIndexes(data, index)\r\n : removeAt(data, index);\n\nvar moveArrayAt = (data, from, to) => isArray(data) ? data.splice(to, 0, data.splice(from, 1)[0]) : [];\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n const temp = [data[indexB], data[indexA]];\r\n data[indexA] = temp[0];\r\n data[indexB] = temp[1];\r\n};\n\nfunction prepend(data, value) {\r\n return [...(isArray(value) ? value : [value || null]), ...data];\r\n}\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...(isArray(value) ? value : [value || null]),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar fillEmptyArray = (value) => isArray(value) ? Array(value.length).fill(null) : null;\n\nconst useFieldArray = ({ control, name, keyName = 'id', }) => {\r\n const methods = useFormContext();\r\n const { isWatchAllRef, resetFieldArrayFunctionRef, fieldArrayNamesRef, reRender, fieldsRef, getValues, defaultValuesRef, removeFieldEventListener, errorsRef, dirtyFieldsRef, isDirtyRef, touchedFieldsRef, readFormStateRef, watchFieldsRef, validFieldsRef, fieldsWithValidationRef, fieldArrayDefaultValues, validateSchemaIsValid, } = control || methods.control;\r\n const getDefaultValues = () => [\r\n ...get(fieldArrayDefaultValues.current[getFieldArrayParentName(name)]\r\n ? fieldArrayDefaultValues.current\r\n : defaultValuesRef.current, name, []),\r\n ];\r\n const memoizedDefaultValues = useRef(getDefaultValues());\r\n const [fields, setField] = useState(mapIds(memoizedDefaultValues.current, keyName));\r\n const [isDeleted, setIsDeleted] = useState(false);\r\n const allFields = useRef(fields);\r\n const isNameKey = isKey(name);\r\n allFields.current = fields;\r\n if (isNameKey) {\r\n fieldArrayDefaultValues.current[name] = memoizedDefaultValues.current;\r\n }\r\n const appendValueWithKey = (values) => values.map((value) => appendId(value, keyName));\r\n const setFieldAndValidState = (fieldsValues) => {\r\n setField(fieldsValues);\r\n if (readFormStateRef.current.isValid && validateSchemaIsValid) {\r\n validateSchemaIsValid({\r\n [name]: fieldsValues,\r\n });\r\n }\r\n };\r\n const modifyDirtyFields = ({ shouldRender, isRemove, isPrePend, index, value = {}, } = {}) => {\r\n let render = shouldRender;\r\n const values = isArray(value) ? value : [value];\r\n if (readFormStateRef.current.dirty) {\r\n const dirtyFieldIndexesAndValues = {};\r\n if (isPrePend || isRemove) {\r\n for (const dirtyField of [...dirtyFieldsRef.current].sort()) {\r\n if (isMatchFieldArrayName(dirtyField, name)) {\r\n const matchedIndexes = dirtyField.match(REGEX_ARRAY_FIELD_INDEX);\r\n if (matchedIndexes) {\r\n const matchIndex = +matchedIndexes[matchedIndexes.length - 1];\r\n if (dirtyFieldIndexesAndValues[matchIndex]) {\r\n dirtyFieldIndexesAndValues[matchIndex].push(dirtyField);\r\n }\r\n else {\r\n dirtyFieldIndexesAndValues[matchIndex] = [dirtyField];\r\n }\r\n }\r\n dirtyFieldsRef.current.delete(dirtyField);\r\n }\r\n }\r\n }\r\n if (!isUndefined(index) || isPrePend) {\r\n const updatedDirtyFieldIndexes = isUndefined(index)\r\n ? []\r\n : getSortRemovedItems(Object.keys(dirtyFieldIndexesAndValues).map((i) => +i), isArray(index) ? index : [index]);\r\n Object.values(dirtyFieldIndexesAndValues).forEach((values, index) => {\r\n const updateIndex = isPrePend ? 0 : updatedDirtyFieldIndexes[index];\r\n if (updateIndex > -1) {\r\n for (const value of values) {\r\n const matchedIndexes = value.match(REGEX_ARRAY_FIELD_INDEX);\r\n if (matchedIndexes) {\r\n dirtyFieldsRef.current.add(value.replace(/[\\d+]([^[\\d+]+)$/, `${isPrePend\r\n ? +matchedIndexes[matchedIndexes.length - 1] +\r\n values.length\r\n : updateIndex}$1`));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (!isRemove) {\r\n values.forEach((fieldValue, index) => Object.keys(fieldValue).forEach((key) => dirtyFieldsRef.current.add(`${name}[${isPrePend ? index : allFields.current.length + index}].${key}`)));\r\n isDirtyRef.current = true;\r\n }\r\n render = true;\r\n }\r\n if (render && !isWatchAllRef.current) {\r\n reRender();\r\n }\r\n };\r\n const resetFields = (flagOrFields) => {\r\n if (readFormStateRef.current.dirty) {\r\n isDirtyRef.current = isUndefined(flagOrFields)\r\n ? true\r\n : getIsFieldsDifferent(flagOrFields, defaultValuesRef.current[name] || []);\r\n }\r\n for (const key in fieldsRef.current) {\r\n if (isMatchFieldArrayName(key, name) && fieldsRef.current[key]) {\r\n removeFieldEventListener(fieldsRef.current[key], true);\r\n }\r\n }\r\n };\r\n const mapCurrentFieldsValueWithState = () => {\r\n const currentFieldsValue = get(getValues({ nest: true }), name);\r\n if (isArray(currentFieldsValue)) {\r\n for (let i = 0; i < currentFieldsValue.length; i++) {\r\n allFields.current[i] = Object.assign(Object.assign({}, allFields.current[i]), currentFieldsValue[i]);\r\n }\r\n }\r\n };\r\n const append = (value) => {\r\n setFieldAndValidState([\r\n ...allFields.current,\r\n ...(isArray(value)\r\n ? appendValueWithKey(value)\r\n : [appendId(value, keyName)]),\r\n ]);\r\n modifyDirtyFields({ value });\r\n };\r\n const prepend$1 = (value) => {\r\n let shouldRender = false;\r\n resetFields();\r\n setFieldAndValidState(prepend(allFields.current, isArray(value) ? appendValueWithKey(value) : [appendId(value, keyName)]));\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = prepend(errorsRef.current[name], fillEmptyArray(value));\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = prepend(touchedFieldsRef.current[name], fillEmptyArray(value));\r\n shouldRender = true;\r\n }\r\n modifyDirtyFields({\r\n shouldRender,\r\n isPrePend: true,\r\n value,\r\n });\r\n };\r\n const remove = (index) => {\r\n let shouldRender = false;\r\n const isIndexUndefined = isUndefined(index);\r\n if (!isIndexUndefined) {\r\n mapCurrentFieldsValueWithState();\r\n }\r\n resetFields(removeArrayAt(getFieldValueByName(fieldsRef.current, name), index));\r\n setFieldAndValidState(removeArrayAt(allFields.current, index));\r\n setIsDeleted(true);\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = removeArrayAt(errorsRef.current[name], index);\r\n if (!errorsRef.current[name].filter(Boolean).length) {\r\n delete errorsRef.current[name];\r\n }\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = removeArrayAt(touchedFieldsRef.current[name], index);\r\n shouldRender = true;\r\n }\r\n if (readFormStateRef.current.isValid && !validateSchemaIsValid) {\r\n let fieldIndex = -1;\r\n let isFound = false;\r\n const isIndexUndefined = isUndefined(index);\r\n while (fieldIndex++ < fields.length) {\r\n const isLast = fieldIndex === fields.length - 1;\r\n const isCurrentIndex = (isArray(index) ? index : [index]).indexOf(fieldIndex) >= 0;\r\n if (isCurrentIndex || isIndexUndefined) {\r\n isFound = true;\r\n }\r\n if (!isFound) {\r\n continue;\r\n }\r\n for (const key in fields[fieldIndex]) {\r\n const currentFieldName = `${name}[${fieldIndex}].${key}`;\r\n if (isCurrentIndex || isLast || isIndexUndefined) {\r\n validFieldsRef.current.delete(currentFieldName);\r\n fieldsWithValidationRef.current.delete(currentFieldName);\r\n }\r\n else {\r\n const previousFieldName = `${name}[${fieldIndex - 1}].${key}`;\r\n if (validFieldsRef.current.has(currentFieldName)) {\r\n validFieldsRef.current.add(previousFieldName);\r\n }\r\n if (fieldsWithValidationRef.current.has(currentFieldName)) {\r\n fieldsWithValidationRef.current.add(previousFieldName);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n modifyDirtyFields({\r\n shouldRender,\r\n isRemove: true,\r\n index,\r\n });\r\n };\r\n const insert$1 = (index, value) => {\r\n mapCurrentFieldsValueWithState();\r\n resetFields(insert(getFieldValueByName(fieldsRef.current, name), index));\r\n setFieldAndValidState(insert(allFields.current, index, isArray(value) ? appendValueWithKey(value) : [appendId(value, keyName)]));\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = insert(errorsRef.current[name], index, fillEmptyArray(value));\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = insert(touchedFieldsRef.current[name], index, fillEmptyArray(value));\r\n reRender();\r\n }\r\n };\r\n const swap = (indexA, indexB) => {\r\n mapCurrentFieldsValueWithState();\r\n const fieldValues = getFieldValueByName(fieldsRef.current, name);\r\n swapArrayAt(fieldValues, indexA, indexB);\r\n resetFields(fieldValues);\r\n swapArrayAt(allFields.current, indexA, indexB);\r\n setFieldAndValidState([...allFields.current]);\r\n if (errorsRef.current[name]) {\r\n swapArrayAt(errorsRef.current[name], indexA, indexB);\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n swapArrayAt(touchedFieldsRef.current[name], indexA, indexB);\r\n reRender();\r\n }\r\n };\r\n const move = (from, to) => {\r\n mapCurrentFieldsValueWithState();\r\n const fieldValues = getFieldValueByName(fieldsRef.current, name);\r\n moveArrayAt(fieldValues, from, to);\r\n resetFields(fieldValues);\r\n moveArrayAt(allFields.current, from, to);\r\n setFieldAndValidState([...allFields.current]);\r\n if (errorsRef.current[name]) {\r\n moveArrayAt(errorsRef.current[name], from, to);\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n moveArrayAt(touchedFieldsRef.current[name], from, to);\r\n reRender();\r\n }\r\n };\r\n const reset = () => {\r\n resetFields();\r\n memoizedDefaultValues.current = getDefaultValues();\r\n setField(mapIds(memoizedDefaultValues.current, keyName));\r\n };\r\n useEffect(() => {\r\n if (isNameKey &&\r\n isDeleted &&\r\n fieldArrayDefaultValues.current[name] &&\r\n fields.length < fieldArrayDefaultValues.current[name].length) {\r\n fieldArrayDefaultValues.current[name].pop();\r\n }\r\n }, [fields, name, fieldArrayDefaultValues, isDeleted, isNameKey]);\r\n useEffect(() => {\r\n if (isWatchAllRef && isWatchAllRef.current) {\r\n reRender();\r\n }\r\n else if (watchFieldsRef) {\r\n for (const watchField of watchFieldsRef.current) {\r\n if (watchField.startsWith(name)) {\r\n reRender();\r\n break;\r\n }\r\n }\r\n }\r\n }, [fields, name, reRender, watchFieldsRef, isWatchAllRef]);\r\n useEffect(() => {\r\n const resetFunctions = resetFieldArrayFunctionRef.current;\r\n const fieldArrayNames = fieldArrayNamesRef.current;\r\n fieldArrayNames.add(name);\r\n resetFunctions[name] = reset;\r\n return () => {\r\n resetFields();\r\n delete resetFunctions[name];\r\n fieldArrayNames.delete(name);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n return {\r\n swap: useCallback(swap, [name]),\r\n move: useCallback(move, [name]),\r\n prepend: useCallback(prepend$1, [name]),\r\n append: useCallback(append, [name]),\r\n remove: useCallback(remove, [fields, name]),\r\n insert: useCallback(insert$1, [name]),\r\n fields,\r\n };\r\n};\n\nvar getInputValue = (event, isCheckboxInput) => isPrimitive(event) ||\r\n !isObject(event.target) ||\r\n (isObject(event.target) && !event.type)\r\n ? event\r\n : isCheckboxInput || isUndefined(event.target.value)\r\n ? event.target.checked\r\n : event.target.value;\n\nconst Controller = (_a) => {\r\n var { name, rules, as: InnerComponent, onBlur, onChange, onChangeName = VALIDATION_MODE.onChange, onBlurName = VALIDATION_MODE.onBlur, valueName, defaultValue, control, onFocus } = _a, rest = __rest(_a, [\"name\", \"rules\", \"as\", \"onBlur\", \"onChange\", \"onChangeName\", \"onBlurName\", \"valueName\", \"defaultValue\", \"control\", \"onFocus\"]);\r\n const methods = useFormContext();\r\n const { defaultValuesRef, setValue, register, unregister, errorsRef, removeFieldEventListener, triggerValidation, mode: { isOnSubmit, isOnBlur, isOnChange }, reValidateMode: { isReValidateOnBlur, isReValidateOnSubmit }, formState: { isSubmitted }, touchedFieldsRef, readFormStateRef, reRender, fieldsRef, fieldArrayNamesRef, } = control || methods.control;\r\n const [value, setInputStateValue] = useState(isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue);\r\n const valueRef = useRef(value);\r\n const isCheckboxInput = isBoolean(value);\r\n const shouldReValidateOnBlur = isOnBlur || isReValidateOnBlur;\r\n const rulesRef = useRef(rules);\r\n const onFocusRef = useRef(onFocus);\r\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n rulesRef.current = rules;\r\n const shouldValidate = () => !skipValidation({\r\n hasError: !!get(errorsRef.current, name),\r\n isOnBlur,\r\n isOnSubmit,\r\n isOnChange,\r\n isReValidateOnBlur,\r\n isReValidateOnSubmit,\r\n isSubmitted,\r\n });\r\n const commonTask = (event) => {\r\n const data = getInputValue(event, isCheckboxInput);\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n return data;\r\n };\r\n const eventWrapper = (event) => (...arg) => setValue(name, commonTask(event(arg)), shouldValidate());\r\n const handleChange = (event) => {\r\n const data = commonTask(event);\r\n setValue(name, data, shouldValidate());\r\n };\r\n const registerField = useCallback(() => {\r\n if (!isNotFieldArray) {\r\n removeFieldEventListener(fieldsRef.current[name], true);\r\n }\r\n register(Object.defineProperty({ name, focus: onFocusRef.current }, VALUE, {\r\n set(data) {\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n },\r\n get() {\r\n return valueRef.current;\r\n },\r\n }), rulesRef.current);\r\n }, [\r\n isNotFieldArray,\r\n fieldsRef,\r\n rulesRef,\r\n name,\r\n onFocusRef,\r\n register,\r\n removeFieldEventListener,\r\n ]);\r\n useEffect(() => () => {\r\n !isNameInFieldArray(fieldArrayNamesRef.current, name) && unregister(name);\r\n }, [unregister, name, fieldArrayNamesRef]);\r\n useEffect(() => {\r\n registerField();\r\n }, [registerField]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (!fieldsRef.current[name]) {\r\n registerField();\r\n if (isNotFieldArray) {\r\n setInputStateValue(isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue);\r\n }\r\n }\r\n });\r\n const props = Object.assign(Object.assign(Object.assign(Object.assign({ name }, rest), (onChange\r\n ? { [onChangeName]: eventWrapper(onChange) }\r\n : { [onChangeName]: handleChange })), { [onBlurName]: (...args) => {\r\n if (onBlur) {\r\n onBlur(args);\r\n }\r\n if (readFormStateRef.current.touched &&\r\n !get(touchedFieldsRef.current, name)) {\r\n set(touchedFieldsRef.current, name, true);\r\n reRender();\r\n }\r\n if (shouldReValidateOnBlur) {\r\n triggerValidation(name);\r\n }\r\n } }), { [valueName || (isCheckboxInput ? 'checked' : VALUE)]: value });\r\n return isValidElement(InnerComponent)\r\n ? cloneElement(InnerComponent, props)\r\n : createElement(InnerComponent, props);\r\n};\n\nconst ErrorMessage = (_a) => {\r\n var { as: InnerComponent, errors, name, message, children } = _a, rest = __rest(_a, [\"as\", \"errors\", \"name\", \"message\", \"children\"]);\r\n const methods = useFormContext();\r\n const error = get(errors || methods.errors, name);\r\n if (!error) {\r\n return null;\r\n }\r\n const { message: messageFromRegister, types } = error;\r\n const props = Object.assign(Object.assign({}, (InnerComponent ? rest : {})), { children: children\r\n ? children({ message: messageFromRegister || message, messages: types })\r\n : messageFromRegister || message });\r\n return InnerComponent ? (isValidElement(InnerComponent) ? (cloneElement(InnerComponent, props)) : (createElement(InnerComponent, props))) : (createElement(Fragment, Object.assign({}, props)));\r\n};\n\nexport { Controller, ErrorMessage, FormContext, useFieldArray, useForm, useFormContext };\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\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","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } 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';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\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 *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n 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 if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[cellIndex]);\n }\n else {\n parentRow.appendChild(newTD);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[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(literals.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 *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.ariaColIndex };\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 { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '
' + getLocaleText(parent, 'Content-Rename-Confirmation') + '
';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '
' + getLocaleText(parent, 'Content-Duplicate') + '
';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '
' +\n (getLocaleText(parent, 'Content-Retry')) + '
';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('
' + getLocaleText(parent, 'Content-Multiple-Delete') + '
')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '
' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '
';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '' + getLocaleText(parent, 'Permission') + ''\n + objectToString(details.permission) + '';\n }\n options.header = details.name;\n options.content = '' +\n '' +\n '' +\n '' +\n ''\n + permission + '
' + getLocaleText(parent, 'Type') + '' + (details.isFile ? 'File' : 'Folder') + '
' + getLocaleText(parent, 'Size') + '' + details.size + '
' + getLocaleText(parent, 'Location') + '' + details.location + '
' + getLocaleText(parent, 'Modified') + ''\n + formattedString + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = details.name.split(',').map(function (val) {\n var index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '' +\n '' + '' + '
' + getLocaleText(parent, 'Type')\n + ':' + fileType + '
' + getLocaleText(parent, 'Size') + ':' +\n details.size + '
' + getLocaleText(parent, 'Location') +\n ':'\n + location + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '
' +\n getLocaleText(parent, 'Access-Denied') + '
';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '
' + e.error.message + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { 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 * `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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, 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, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\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 * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n var checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n this.valueTempElement = null;\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.actionData = { 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.previousValue = null;\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\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 * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\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 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.onBlurHandler = 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.onBlurHandler, 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.onBlurHandler);\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 * @returns {void}\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 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 DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\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 DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\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 * Hides the spinner loader.\n *\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 *\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 var 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 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 * @returns {void}\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 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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\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 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 event: eve\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\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() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\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.clone() : this.query ? this.query.clone() : 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n 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 = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : 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.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 if (!this.isTyped && this.element.tagName === 'SELECT') {\n this.renderSelectElement(this.element, list);\n }\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.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\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.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (isNullOrUndefined(this.actionData.ulElement) && isNullOrUndefined(this.actionData.list)) {\n this.actionData = this.actionCompleteData;\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 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 // eslint-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 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 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.onBlurHandler);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 *\n * @private\n * @returns {void}\n */\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 = !isNullOrUndefined(selectElement.options[selectElement.selectedIndex]) ?\n selectElement.options[selectElement.selectedIndex].value : null;\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) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionData = this.actionCompleteData;\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.selectData = null;\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\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 *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\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 this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\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.actionData = this.actionCompleteData;\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 {\n // eslint-disable-next-line max-len\n var ddlProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n }\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 of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n *\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.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list != this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\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 /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\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 *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\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 *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n 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 *\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 /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\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","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\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","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_TAIL_WIDTH = 24;\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_TAILWINDSPIN = 'e-spin-tailwind';\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';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\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 *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\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 /* eslint-enable */\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 // eslint-disable-next-line\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 *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\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 // eslint-disable-next-line\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}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\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 // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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 createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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 case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\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}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\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}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\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}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\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 /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\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}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\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 'Tailwind':\n case 'Tailwind-dark':\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}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\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}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\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}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\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}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\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}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\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}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\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}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\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}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, 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}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\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}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\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}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\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// eslint-disable-next-line\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\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 *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\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 *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\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}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\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","/**\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 * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\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}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n //eslint-disable-next-line\n popupRect = undefined;\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}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\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}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && element.classList.contains('e-date-range-wrapper')) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\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 { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[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 /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[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 * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","/**\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","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.ariaRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { 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 setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\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 * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, 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","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\n/**\r\n * This file exists to hold environment utilities that are requied to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only defined methods (functions) in this class so that users of these \r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\n\r\nexport const strUndefined = \"undefined\";\r\nexport const strObject = \"object\";\r\nexport const strPrototype = \"prototype\";\r\nexport const strFunction = \"function\";\r\n\r\nconst strWindow = \"window\";\r\nconst strDocument = \"document\";\r\nconst strNavigator = \"navigator\";\r\nconst strHistory = \"history\";\r\nconst strLocation = \"location\";\r\nconst strPerformance = \"performance\";\r\nconst strJSON = \"JSON\";\r\n\r\n// To address compile time errors declaring these here\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal \r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(): Window {\r\n if (typeof globalThis !== strUndefined && globalThis) {\r\n return globalThis;\r\n }\r\n\r\n if (typeof self !== strUndefined && self) {\r\n return self;\r\n }\r\n\r\n if (typeof window !== strUndefined && window) {\r\n return window;\r\n }\r\n\r\n if (typeof global !== strUndefined && global) {\r\n return global;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name:string): T {\r\n let gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name] as T;\r\n }\r\n\r\n // Test workaround, for environments where .window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window as T;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a \r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window \r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\" \r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow(): boolean {\r\n return Boolean(typeof window === strObject && window);\r\n}\r\n\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow(): Window | null {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a \r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document \r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\" \r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument(): boolean {\r\n return Boolean(typeof document === strObject && document);\r\n}\r\n\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument(): Document | null {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n\r\n return getGlobalInst(strDocument);\r\n}\r\n\r\n\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a \r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator \r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\" \r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator(): boolean {\r\n return Boolean(typeof navigator === strObject && navigator);\r\n}\r\n\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator(): Navigator | null {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n\r\n return getGlobalInst(strNavigator);\r\n}\r\n\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a \r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history \r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\" \r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory(): boolean {\r\n return Boolean(typeof history === strObject && history);\r\n}\r\n\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory(): History | null {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n\r\n return getGlobalInst(strHistory);\r\n}\r\n\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(): Location | null {\r\n if (typeof location === strObject && location) {\r\n return location;\r\n }\r\n\r\n return getGlobalInst(strLocation);\r\n}\r\n\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance(): Performance | null {\r\n return getGlobalInst(strPerformance);\r\n}\r\n\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a \r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history \r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\" \r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON(): boolean {\r\n return Boolean((typeof JSON === strObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON(): JSON | null {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n\r\n return null;\r\n}\r\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[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)) {\n columns.push(new Column({}));\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? 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();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.isRowDragable() && !start) {\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 row.uid = getUid('grid-row');\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 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 () {\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 * Specifies Chart Themes\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.axisLabelFont = {\n size: '12px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.axisTitleFont = {\n size: '14px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartTitleFont = {\n size: '15px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.chartSubTitleFont = {\n size: '11px',\n fontWeight: '500',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.crosshairLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.tooltipLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendLabelFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.legendTitleFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stripLineLabelFont = {\n size: '12px',\n fontWeight: 'Regular',\n color: '#353535',\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n /** @private */\n Theme.stockEventFont = {\n size: '13px',\n fontWeight: 'Normal',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n };\n})(Theme || (Theme = {}));\n/** @private */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'Highcontrast':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n // palette = ['#B586FF', '#71F9A3', '#FF9572', '#5BD5FF', '#F9F871',\n // '#B6F971', '#8D71F9', '#FF6F91', '#FFC75F', '#D55DB1'];\n // break;\n case 'Tailwind':\n palette = ['#5A61F6', '#65A30D', '#334155', '#14B8A6', '#8B5CF6',\n '#0369A1', '#F97316', '#9333EA', '#F59E0B', '#15803D'];\n break;\n case 'TailwindDark':\n palette = ['#8B5CF6', '#22D3EE', '#F87171', '#4ADE80', '#E879F9',\n '#FCD34D', '#F97316', '#2DD4BF', '#F472B6', '#10B981'];\n break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/** @private */\nexport function getThemeColor(theme) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#303030' : (theme === 'FabricDark' ? '#201F1F' : '1A1A1A');\n switch (theme) {\n case 'HighContrastLight':\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: '#000000',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939'\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: darkBackground,\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: '#F4F4F4',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727'\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: '#FFFFFF', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#495057',\n crosshairLabel: '#FFFFFF', tooltipFill: 'rgba(0, 0, 0, 0.9)', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057'\n };\n break;\n case 'Tailwind':\n style = {\n axisLabel: '#6B728', axisTitle: '#374151',\n axisLine: ' #D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#374151',\n legendLabel: '#374151',\n background: 'rgba(255,255,255, 0.0)',\n areaBorder: ' #E5E7EB',\n errorBar: '#374151',\n crosshairLine: '#1F2937',\n crosshairFill: '#111827',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280'\n };\n break;\n case 'TailwindDark':\n style = {\n axisLabel: '#9CA3AF', axisTitle: '#9CA3AF',\n axisLine: ' #4B5563',\n majorGridLine: '#374151',\n minorGridLine: '#374151',\n majorTickLine: '#4B5563',\n minorTickLine: ' #4B5563',\n chartTitle: '#D1D5DB',\n legendLabel: '#D1D5DB',\n background: 'rgba(255,255,255, 0.0)',\n areaBorder: ' #374151',\n errorBar: '#374151',\n crosshairLine: '#9CA3AF',\n crosshairFill: '#F9FAFB',\n crosshairLabel: '#1F2937',\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(34,211,238, 0.1)',\n selectionRectStroke: '#22D3EE',\n selectionCircleStroke: '#282727'\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: '#FFFFFF',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: '#4f4f4f',\n crosshairLabel: '#e5e5e5',\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2'\n };\n break;\n }\n return style;\n}\n/** @private */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\n}\n","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","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 *\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 * @param {string} elementId - Specifies the list element ID.\n * @param {boolean} isBlazor - Specifies the platform is Blazor or not.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 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] ? matches[index] : matches[0];\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 if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\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}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\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}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = \"(\" + res + \")\";\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + _this.options.select + \"=\" + selected[expand].join(',') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dm\n * @param {Query} query?\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\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 {Object} request?\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\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 * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\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","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates } 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 *\n * @param {IXLFilter} parent - specifies the IXLFilter\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 * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[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 var filterModel = 'filterModel';\n args[filterModel] = this;\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 enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: '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);\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 this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n 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, ignoreAccent: this.options.ignoreAccent\n },\n field: this.options.field\n };\n if (value !== undefined && value !== null && value !== '') {\n if (this.isBlanks && value && typeof value === 'string' &&\n this.getLocalizedLabel('Blanks').toLowerCase().indexOf(value.toLowerCase()) >= 0) {\n this.fltrBtnHandler();\n }\n else {\n if (this.isForeignColumn(this.options.column)) {\n this.foreignFilter(args, value);\n }\n else {\n this.options.handler(args);\n }\n }\n }\n else {\n this.closeDialog();\n }\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 /**\n * @returns {void}\n * @hidden\n */\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;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n 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 // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n 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 coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n 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 var filterModel = 'filterModel';\n args[filterModel] = this;\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 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 if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n };\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 this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var 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.getElementsByClassName('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 (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n 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 ? [] : data };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n 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 operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\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 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n","/**\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\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 *\n * @returns {void}\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 (!isNullOrUndefined(this.element) && !(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 * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\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 *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\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 // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\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 parentDisplay = void 0;\n var display = this.element.style.display;\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 *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\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 *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\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 *\n * @returns {void}\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' && !isNullOrUndefined(this.element) && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top) ? formatUnit(window.scrollY - parseInt(this.element.style.top))\n : formatUnit(parseInt(this.element.style.top) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && 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 *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\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 *\n * @returns {void}\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 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 if (!element.isEqualNode(childNodes[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 }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\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 // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * 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","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 * 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","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","/**\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 * 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 * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","/* eslint-disable jsdoc/require-returns */\n/**\n * Numeric Range.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[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 ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n 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 = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport enum LoggingSeverity {\r\n /**\r\n * Error will be sent as internal telemetry\r\n */\r\n CRITICAL = 1,\r\n\r\n /**\r\n * Error will NOT be sent as internal telemetry, and will only be shown in browser console\r\n */\r\n WARNING = 2,\r\n}\r\n\r\n/**\r\n * Internal message ID. Please create a new one for every conceptually different message. Please keep alphabetically ordered\r\n */\r\nexport const _InternalMessageId = {\r\n // Non user actionable\r\n BrowserDoesNotSupportLocalStorage: 0,\r\n BrowserCannotReadLocalStorage: 1,\r\n BrowserCannotReadSessionStorage: 2,\r\n BrowserCannotWriteLocalStorage: 3,\r\n BrowserCannotWriteSessionStorage: 4,\r\n BrowserFailedRemovalFromLocalStorage: 5,\r\n BrowserFailedRemovalFromSessionStorage: 6,\r\n CannotSendEmptyTelemetry: 7,\r\n ClientPerformanceMathError: 8,\r\n ErrorParsingAISessionCookie: 9,\r\n ErrorPVCalc: 10,\r\n ExceptionWhileLoggingError: 11,\r\n FailedAddingTelemetryToBuffer: 12,\r\n FailedMonitorAjaxAbort: 13,\r\n FailedMonitorAjaxDur: 14,\r\n FailedMonitorAjaxOpen: 15,\r\n FailedMonitorAjaxRSC: 16,\r\n FailedMonitorAjaxSend: 17,\r\n FailedMonitorAjaxGetCorrelationHeader: 18,\r\n FailedToAddHandlerForOnBeforeUnload: 19,\r\n FailedToSendQueuedTelemetry: 20,\r\n FailedToReportDataLoss: 21,\r\n FlushFailed: 22,\r\n MessageLimitPerPVExceeded: 23,\r\n MissingRequiredFieldSpecification: 24,\r\n NavigationTimingNotSupported: 25,\r\n OnError: 26,\r\n SessionRenewalDateIsZero: 27,\r\n SenderNotInitialized: 28,\r\n StartTrackEventFailed: 29,\r\n StopTrackEventFailed: 30,\r\n StartTrackFailed: 31,\r\n StopTrackFailed: 32,\r\n TelemetrySampledAndNotSent: 33,\r\n TrackEventFailed: 34,\r\n TrackExceptionFailed: 35,\r\n TrackMetricFailed: 36,\r\n TrackPVFailed: 37,\r\n TrackPVFailedCalc: 38,\r\n TrackTraceFailed: 39,\r\n TransmissionFailed: 40,\r\n FailedToSetStorageBuffer: 41,\r\n FailedToRestoreStorageBuffer: 42,\r\n InvalidBackendResponse: 43,\r\n FailedToFixDepricatedValues: 44,\r\n InvalidDurationValue: 45,\r\n TelemetryEnvelopeInvalid: 46,\r\n CreateEnvelopeError: 47,\r\n\r\n // User actionable\r\n CannotSerializeObject: 48,\r\n CannotSerializeObjectNonSerializable: 49,\r\n CircularReferenceDetected: 50,\r\n ClearAuthContextFailed: 51,\r\n ExceptionTruncated: 52,\r\n IllegalCharsInName: 53,\r\n ItemNotInArray: 54,\r\n MaxAjaxPerPVExceeded: 55,\r\n MessageTruncated: 56,\r\n NameTooLong: 57,\r\n SampleRateOutOfRange: 58,\r\n SetAuthContextFailed: 59,\r\n SetAuthContextFailedAccountName: 60,\r\n StringValueTooLong: 61,\r\n StartCalledMoreThanOnce: 62,\r\n StopCalledWithoutStart: 63,\r\n TelemetryInitializerFailed: 64,\r\n TrackArgumentsNotSpecified: 65,\r\n UrlTooLong: 66,\r\n SessionStorageBufferFull: 67,\r\n CannotAccessCookie: 68,\r\n IdTooLong: 69,\r\n InvalidEvent: 70,\r\n FailedMonitorAjaxSetRequestHeader: 71,\r\n SendBrowserInfoOnUserInit: 72,\r\n PluginException: 73\r\n};\r\nexport type _InternalMessageId = number | typeof _InternalMessageId;\r\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","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\nimport { ITelemetryItem } from '../JavaScriptSDK.Interfaces/ITelemetryItem';\r\nimport { IProcessTelemetryContext } from \"../JavaScriptSDK.Interfaces/IProcessTelemetryContext\";\r\nimport { ITelemetryPluginChain } from \"../JavaScriptSDK.Interfaces/ITelemetryPluginChain\";\r\nimport { IPlugin, ITelemetryPlugin } from '../JavaScriptSDK.Interfaces/ITelemetryPlugin';\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { _InternalLogMessage } from \"./DiagnosticLogger\";\r\nimport { LoggingSeverity, _InternalMessageId } from '../JavaScriptSDK.Enums/LoggingEnums';\r\n\r\nlet _isFunction = CoreUtils.isFunction;\r\n\r\nexport class TelemetryPluginChain implements ITelemetryPluginChain {\r\n\r\n /**\r\n * Returns the underlying plugin that is being proxied for the processTelemetry call\r\n */\r\n getPlugin: () => ITelemetryPlugin;\r\n\r\n /**\r\n * Returns the next plugin\r\n */\r\n getNext: () => ITelemetryPluginChain;\r\n\r\n /**\r\n * Sets the next proxy to be executed as the next plugin\r\n * (Should only be used during initialization, which is why it's not defined on the interface)\r\n */\r\n setNext: (nextPlugin:ITelemetryPluginChain) => void;\r\n\r\n /**\r\n * Call back for telemetry processing before it it is sent\r\n * @param env - This is the current event being reported\r\n * @param itemCtx - This is the context for the current request, ITelemetryPlugin instances \r\n * can optionally use this to access the current core instance or define / pass additional information\r\n * to later plugins (vs appending items to the telemetry item)\r\n */\r\n processTelemetry: (env: ITelemetryItem, itemCtx: IProcessTelemetryContext) => void;\r\n\r\n /**\r\n * Internal flag used to try and identify root cause failures\r\n */\r\n private _hasRun: boolean;\r\n\r\n constructor(plugin:ITelemetryPlugin, defItemCtx:IProcessTelemetryContext) {\r\n let _self = this;\r\n let _nextProxy:ITelemetryPluginChain = null;\r\n let _hasProcessTelemetry = _isFunction(plugin.processTelemetry);\r\n let _hasSetNext = _isFunction(plugin.setNextPlugin);\r\n\r\n _self._hasRun = false;\r\n\r\n _self.getPlugin = () => {\r\n return plugin;\r\n };\r\n\r\n _self.getNext = () => {\r\n return _nextProxy;\r\n };\r\n\r\n _self.setNext = (nextPlugin:ITelemetryPluginChain) => {\r\n _nextProxy = nextPlugin;\r\n }\r\n\r\n _self.processTelemetry = (env: ITelemetryItem, itemCtx:IProcessTelemetryContext) => {\r\n if (!itemCtx) {\r\n // Looks like a plugin didn't pass the (optional) context, so restore to the default\r\n itemCtx = defItemCtx;\r\n }\r\n\r\n if (plugin && _hasProcessTelemetry) {\r\n _self._hasRun = true;\r\n try {\r\n\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some \r\n // other form of error occurred\r\n itemCtx.setNext(_nextProxy);\r\n if (_hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin.setNextPlugin(_nextProxy);\r\n }\r\n\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n _nextProxy && ((_nextProxy as TelemetryPluginChain)._hasRun = false);\r\n\r\n plugin.processTelemetry(env, itemCtx);\r\n } catch (error) {\r\n let hasRun = _nextProxy && (_nextProxy as TelemetryPluginChain)._hasRun;\r\n if (!_nextProxy || !hasRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n itemCtx.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.PluginException,\r\n \"Plugin [\" + plugin.identifier + \"] failed during processTelemetry - \" + error);\r\n }\r\n\r\n if (_nextProxy && !hasRun) {\r\n // As part of the failure the current plugin did not attempt to call the next plugin in the cahin\r\n // So rather than leave the pipeline dead in the water we call the next plugin\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n }\r\n } else if (_nextProxy) {\r\n _self._hasRun = true;\r\n\r\n // The underlying plugin is either not defined or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n _nextProxy.processTelemetry(env, itemCtx);\r\n }\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\nimport { IAppInsightsCore } from \"../JavaScriptSDK.Interfaces/IAppInsightsCore\";\r\nimport { IDiagnosticLogger } from '../JavaScriptSDK.Interfaces/IDiagnosticLogger';\r\nimport { IConfiguration } from '../JavaScriptSDK.Interfaces/IConfiguration';\r\nimport { ITelemetryItem } from '../JavaScriptSDK.Interfaces/ITelemetryItem';\r\nimport { IPlugin, ITelemetryPlugin } from '../JavaScriptSDK.Interfaces/ITelemetryPlugin';\r\nimport { IProcessTelemetryContext } from \"../JavaScriptSDK.Interfaces/IProcessTelemetryContext\";\r\nimport { ITelemetryPluginChain } from '../JavaScriptSDK.Interfaces/ITelemetryPluginChain';\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { TelemetryPluginChain } from \"./TelemetryPluginChain\";\r\n\r\nlet _isNullOrUndefined = CoreUtils.isNullOrUndefined;\r\n\r\n/**\r\n * Creates the instance execution chain for the plugins\r\n */\r\nfunction _createProxyChain(plugins:IPlugin[], itemCtx:IProcessTelemetryContext) {\r\n let proxies:ITelemetryPluginChain[] = [];\r\n \r\n if (plugins && plugins.length > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n let lastProxy:TelemetryPluginChain = null;\r\n for (let idx = 0; idx < plugins.length; idx++) {\r\n let thePlugin = plugins[idx] as ITelemetryPlugin;\r\n if (thePlugin && CoreUtils.isFunction(thePlugin.processTelemetry)) {\r\n // Only add plugins that are processors\r\n let newProxy = new TelemetryPluginChain(thePlugin, itemCtx);\r\n proxies.push(newProxy);\r\n if (lastProxy) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy.setNext(newProxy);\r\n }\r\n \r\n lastProxy = newProxy;\r\n }\r\n }\r\n }\r\n\r\n return proxies.length > 0 ? proxies[0] : null;\r\n}\r\n\r\nfunction _copyProxyChain(proxy:ITelemetryPluginChain, itemCtx:IProcessTelemetryContext, startAt:IPlugin) {\r\n let plugins:IPlugin[] = [];\r\n let add = startAt ? false : true;\r\n\r\n if (proxy) {\r\n while (proxy) {\r\n let thePlugin = proxy.getPlugin();\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n\r\n if (!add) {\r\n plugins.push(startAt);\r\n }\r\n \r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\n\r\nfunction _copyPluginChain(srcPlugins:IPlugin[], itemCtx:IProcessTelemetryContext, startAt:IPlugin) {\r\n let plugins:IPlugin[] = srcPlugins;\r\n let add = false;\r\n if (startAt && srcPlugins) {\r\n plugins = [];\r\n \r\n CoreUtils.arrForEach(srcPlugins, thePlugin => {\r\n if (add || thePlugin === startAt) {\r\n add = true;\r\n plugins.push(thePlugin);\r\n }\r\n });\r\n }\r\n\r\n if (startAt && !add) {\r\n if (!plugins) {\r\n plugins = [];\r\n }\r\n plugins.push(startAt);\r\n }\r\n \r\n return _createProxyChain(plugins, itemCtx);\r\n}\r\n\r\nexport class ProcessTelemetryContext implements IProcessTelemetryContext {\r\n /**\r\n * Gets the current core config instance\r\n */\r\n public getCfg: () => IConfiguration;\r\n\r\n public getExtCfg: (identifier:string, defaultValue?:T|any) => T;\r\n \r\n public getConfig: (identifier:string, field: string, defaultValue?: number | string | boolean) => number | string | boolean;\r\n\r\n /**\r\n * Returns the IAppInsightsCore instance for the current request\r\n */\r\n public core: () => IAppInsightsCore;\r\n\r\n /**\r\n * Returns the current IDiagnosticsLogger for the current request\r\n */\r\n public diagLog: () => IDiagnosticLogger;\r\n\r\n /**\r\n * Helper to allow inherited classes to check and possibly shortcut executing code only\r\n * required if there is a nextPlugin\r\n */\r\n public hasNext: () => boolean;\r\n\r\n /**\r\n * Returns the next configured plugin proxy\r\n */\r\n public getNext: () => ITelemetryPluginChain;\r\n\r\n /**\r\n * Helper to set the next plugin proxy\r\n */\r\n public setNext: (nextCtx:ITelemetryPluginChain) => void;\r\n\r\n /**\r\n * Call back for telemetry processing before it it is sent\r\n * @param env - This is the current event being reported\r\n * @param itemCtx - This is the context for the current request, ITelemetryPlugin instances \r\n * can optionally use this to access the current core instance or define / pass additional information\r\n * to later plugins (vs appending items to the telemetry item)\r\n */\r\n public processNext: (env: ITelemetryItem) => void;\r\n\r\n /**\r\n * Create a new context using the core and config from the current instance\r\n */\r\n public createNew: (plugins?:IPlugin[]|ITelemetryPluginChain, startAt?:IPlugin) => IProcessTelemetryContext;\r\n\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n constructor(plugins:IPlugin[]|ITelemetryPluginChain, config: IConfiguration, core:IAppInsightsCore, startAt?:IPlugin) {\r\n let _self = this;\r\n let _nextProxy: ITelemetryPluginChain = null; // Null == No next plugin\r\n\r\n // There is no next element (null) vs not defined (undefined)\r\n if (startAt !== null) {\r\n if (plugins && CoreUtils.isFunction((plugins as ITelemetryPluginChain).getPlugin)) {\r\n // We have a proxy chain object\r\n _nextProxy = _copyProxyChain(plugins as ITelemetryPluginChain, _self, startAt||(plugins as ITelemetryPluginChain).getPlugin());\r\n } else {\r\n // We just have an array\r\n if (startAt) {\r\n _nextProxy = _copyPluginChain(plugins as IPlugin[], _self, startAt);\r\n } else if (CoreUtils.isUndefined(startAt)) {\r\n // Undefined means copy the existing chain\r\n _nextProxy = _createProxyChain(plugins as IPlugin[], _self)\r\n }\r\n }\r\n }\r\n\r\n _self.core = () => {\r\n return core;\r\n };\r\n \r\n _self.diagLog = () => {\r\n let logger: IDiagnosticLogger = (core||{} as IAppInsightsCore).logger;\r\n if (!logger) {\r\n // Fallback so we always have a logger\r\n logger = new DiagnosticLogger(config||{});\r\n }\r\n\r\n return logger;\r\n };\r\n\r\n _self.getCfg = () => {\r\n return config;\r\n };\r\n\r\n _self.getExtCfg = (identifier:string, defaultValue:T|any = {}) => {\r\n let theConfig:T;\r\n if (config) {\r\n let extConfig = config.extensionConfig;\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n \r\n return (theConfig ? theConfig : defaultValue) as T;\r\n };\r\n\r\n _self.getConfig = (identifier:string, field: string, defaultValue: number | string | boolean = false) => {\r\n let theValue;\r\n let extConfig = _self.getExtCfg(identifier, null);\r\n if (extConfig && !_isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n } else if (config && !_isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n \r\n return !_isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n };\r\n\r\n _self.hasNext = () => {\r\n return _nextProxy != null;\r\n };\r\n\r\n _self.getNext = () => {\r\n return _nextProxy;\r\n }\r\n\r\n _self.setNext = (nextPlugin:ITelemetryPluginChain) => {\r\n _nextProxy = nextPlugin;\r\n };\r\n\r\n _self.processNext = (env: ITelemetryItem) => {\r\n let nextPlugin = _nextProxy;\r\n\r\n if (nextPlugin) {\r\n // Automatically move to the next plugin\r\n _nextProxy = nextPlugin.getNext();\r\n nextPlugin.processTelemetry(env, _self);\r\n }\r\n };\r\n\r\n _self.createNew = (plugins:IPlugin[]|ITelemetryPluginChain = null, startAt?:IPlugin) => {\r\n return new ProcessTelemetryContext(plugins||_nextProxy, config, core, startAt);\r\n }\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty, Collection, extend } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { Theme } from '../../common/model/theme';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n *\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight) {\n var width = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex(Theme.crosshairLabelFont, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @returns {number} tick line size\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.opposedPosition && this.crossAt >= range.max) || (this.opposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @returns {number} labelSize\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n this.titleSize = measureText(this.title, this.titleStyle);\n titleSize = this.titleSize.height + innerPadding;\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.opposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.opposedPosition) {\n value = crossAxis.isInversed ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isInversed ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (size) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isInversed) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Calculate range for x and y axis after zoom.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateAxisRange = function (size, chart) {\n if (chart.enableAutoIntervalOnBothAxis) {\n if (this.orientation === 'Horizontal' && chart.zoomSettings.mode === 'X') {\n for (var i = 0; i < this.series.length; i++) {\n var yValue = [];\n for (var _i = 0, _a = this.series[i].visiblePoints; _i < _a.length; _i++) {\n var points = _a[_i];\n if ((points.xValue > this.visibleRange.min) && (points.xValue < this.visibleRange.max)) {\n yValue.push(points.yValue);\n }\n }\n for (var _b = 0, _c = chart.axisCollections; _b < _c.length; _b++) {\n var axis = _c[_b];\n if (axis.orientation === 'Vertical' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].yMin = Math.min.apply(Math, yValue);\n axis.series[i].yMax = Math.max.apply(Math, yValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n if (this.orientation === 'Vertical' && chart.zoomSettings.mode === 'Y') {\n for (var i = 0; i < this.series.length; i++) {\n var xValue = [];\n for (var _d = 0, _e = this.series[i].visiblePoints; _d < _e.length; _d++) {\n var points = _e[_d];\n if ((points.yValue > this.visibleRange.min) && (points.yValue < this.visibleRange.max)) {\n xValue.push(points.xValue);\n }\n }\n for (var _f = 0, _g = chart.axisCollections; _f < _g.length; _f++) {\n var axis = _g[_f];\n if (axis.orientation === 'Horizontal' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].xMin = Math.min.apply(Math, xValue);\n axis.series[i].xMax = Math.max.apply(Math, xValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle);\n }\n else {\n label.size = measureText(label.text, this.labelStyle);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isInversed ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle);\n }\n // eslint-disable-next-line no-case-declarations\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isInversed ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isInversed ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.axisTitleFont, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property('Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding } from '../model/base';\nimport { Theme } from '../model/theme';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(5)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.legendTitleFont, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.pageXCollections = []; // pages of x locations\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.isStockChartControl = (chart.getModuleName() === 'stockChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n var maxHeight = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (!this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = this.isTitle && titlePosition === 'Left' ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var start = new ChartLocation(this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + padding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (this.chart.getModuleName() === 'accumulationchart') {\n // eslint-disable-next-line max-len\n legendOption.fill = (this.chart || this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n if (this.chart.getModuleName() === 'stockChart') {\n legendOption.type = this.chart.visibleSeries[count].type;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', count)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', legend.tabIndex.toString());\n legendSeriesGroup.setAttribute('aria-label', legend.description ||\n this.accessbilityText);\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, count);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count);\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('style', 'outline: none; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer'));\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n if (this.isPaging) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /** @private */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x2 = this.isVertical ? '0' : '100';\n var y2 = this.isVertical ? '100' : '0';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle);\n var endTextSize = measureText(endLabel, legend.textStyle);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + legend.padding + (textWidth - startTextSize.width);\n endLabelX = legendBounds.x + linearBarWidth + (3 * legend.padding) + textWidth;\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var textOptions = new TextOption('', startLabelX, startLabelY, '', startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n textOptions = new TextOption('', endLabelX, endLabelY, '', endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, \n // tslint:disable-next-line:align\n null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding));\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color, legendGroup);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += padding + (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart' && !this.isStockChartControl) && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.setAttribute('style', 'clip-path:url(#' + clippath.id + ')');\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, i) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = ((this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') && (legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1));\n var isCustomBorder = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[i].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && i < this.chart.visibleSeries.length) {\n var seriesBorder = this.chart.visibleSeries[i].border;\n borderColor = seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', i), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), 1, '', '');\n var textSize = measureText(legendOption.text, this.legend.textStyle);\n var x = this.legend.isInversed ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: i\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', i);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n // eslint-disable-next-line max-len\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', i);\n textOptions.text = legendOption.text;\n textOptions.x = legend.isInversed ? legendOption.location.x - (legend.shapeWidth / 2) :\n legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n if (element) {\n element.setAttribute('aria-label', legend.description || this.accessbilityText);\n }\n if (isCanvas) {\n var textSize = measureText(textOptions.text, legend.textStyle);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var symbolOption = new PathOption(this.legendID + '_pageup', 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n if (paginggroup) {\n paginggroup.setAttribute('style', 'cursor: pointer');\n }\n this.clipPathHeight = rowCount * (this.maxItemHeight + legend.padding);\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.fivePixel + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + padding + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : this.backwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = '1/' + this.totalPages;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = this.currentPageNumber + '/' + this.totalNoOfPages;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, legend.textStyle.color, paginggroup, false, false, false, false, null, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - this.fivePixel - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = this.legendID + '_pagedown';\n symbolOption.opacity = !legend.enablePages ? this.forwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2) - padding;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5), y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + (bounds.width - (2 * (iconSize + padding) +\n padding + size.width)) + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (pagingText, page, pageNumber, legend) {\n var size = (this.clipPathHeight) * page;\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && !this.isStockChartControl && this.isVertical) {\n size = this.pageXCollections[page * this.maxColumns] - this.legendBounds.x;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = 'translate(-' + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl || this.isStockChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex) {\n this.location = { x: 0, y: 0 };\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target 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 *\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 *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\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 var 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 *\n * @returns {string} - Module name\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 *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\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 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 }\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 }\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 *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\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","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger implements ILogger {\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n public static instance: ILogger = new NullLogger();\r\n\r\n private constructor() {}\r\n\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n public log(_logLevel: LogLevel, _message: string): void {\r\n }\r\n}\r\n","import { isNullOrUndefined, extend } 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 *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n 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 *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @returns {Query} returns the 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 /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[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 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 var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[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 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 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 *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n 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) { 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 dataArgs = args;\n var 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 () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[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 * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.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 *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","/**\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","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\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}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\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 // eslint-disable-next-line\n var topData = '', 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}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, 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 // eslint-disable-next-line\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\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}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, 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}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\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}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\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}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, 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}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\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}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\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}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, 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}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { 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","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n public static RecordSeparatorCode = 0x1e;\r\n public static RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n\r\n public static write(output: string): string {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n\r\n public static parse(input: string): string[] {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\n","/* eslint-disable */\n/**\n * Export default locale\n */\nexport var defaultLocale = {\n 'alignments': 'Alignments',\n 'justifyLeft': 'Align Left',\n 'justifyCenter': 'Align Center',\n 'justifyRight': 'Align Right',\n 'justifyFull': 'Align Justify',\n 'fontName': 'Font Name',\n 'fontSize': 'Font Size',\n 'fontColor': 'Font Color',\n 'backgroundColor': 'Background Color',\n 'bold': 'Bold',\n 'italic': 'Italic',\n 'underline': 'Underline',\n 'strikethrough': 'Strikethrough',\n 'clearFormat': 'Clear Format',\n 'clearAll': 'Clear All',\n 'cut': 'Cut',\n 'copy': 'Copy',\n 'paste': 'Paste',\n 'unorderedList': 'Bulleted List',\n 'orderedList': 'Numbered List',\n 'indent': 'Increase Indent',\n 'outdent': 'Decrease Indent',\n 'undo': 'Undo',\n 'redo': 'Redo',\n 'superscript': 'Superscript',\n 'subscript': 'Subscript',\n 'createLink': 'Insert Link',\n 'openLink': 'Open Link',\n 'editLink': 'Edit Link',\n 'removeLink': 'Remove Link',\n 'image': 'Insert Image',\n 'replace': 'Replace',\n 'align': 'Align',\n 'caption': 'Image Caption',\n 'remove': 'Remove',\n 'insertLink': 'Insert Link',\n 'display': 'Display',\n 'altText': 'Alternative Text',\n 'dimension': 'Change Size',\n 'fullscreen': 'Maximize',\n 'maximize': 'Maximize',\n 'minimize': 'Minimize',\n 'lowerCase': 'Lower Case',\n 'upperCase': 'Upper Case',\n 'print': 'Print',\n 'formats': 'Formats',\n 'sourcecode': 'Code View',\n 'preview': 'Preview',\n 'viewside': 'ViewSide',\n 'insertCode': 'Insert Code',\n 'linkText': 'Display Text',\n 'linkTooltipLabel': 'Title',\n 'linkWebUrl': 'Web Address',\n 'linkTitle': 'Enter a title',\n 'linkurl': 'http://example.com',\n 'linkOpenInNewWindow': 'Open Link in New Window',\n 'linkHeader': 'Insert Link',\n 'dialogInsert': 'Insert',\n 'dialogCancel': 'Cancel',\n 'dialogUpdate': 'Update',\n 'imageHeader': 'Insert Image',\n 'imageLinkHeader': 'You can also provide a link from the web',\n 'mdimageLink': 'Please provide a URL for your image',\n 'imageUploadMessage': 'Drop image here or browse to upload',\n 'imageDeviceUploadMessage': 'Click here to upload',\n 'imageAlternateText': 'Alternate Text',\n 'alternateHeader': 'Alternative Text',\n 'browse': 'Browse',\n 'imageUrl': 'http://example.com/image.png',\n 'imageCaption': 'Caption',\n 'imageSizeHeader': 'Image Size',\n 'imageHeight': 'Height',\n 'imageWidth': 'Width',\n 'textPlaceholder': 'Enter Text',\n 'inserttablebtn': 'Insert Table',\n 'tabledialogHeader': 'Insert Table',\n 'tableWidth': 'Width',\n 'cellpadding': 'Cell Padding',\n 'cellspacing': 'Cell Spacing',\n 'columns': 'Number of columns',\n 'rows': 'Number of rows',\n 'tableRows': 'Table Rows',\n 'tableColumns': 'Table Columns',\n 'tableCellHorizontalAlign': 'Table Cell Horizontal Align',\n 'tableCellVerticalAlign': 'Table Cell Vertical Align',\n 'createTable': 'Create Table',\n 'removeTable': 'Remove Table',\n 'tableHeader': 'Table Header',\n 'tableRemove': 'Table Remove',\n 'tableCellBackground': 'Table Cell Background',\n 'tableEditProperties': 'Table Edit Properties',\n 'styles': 'Styles',\n 'insertColumnLeft': 'Insert Column Left',\n 'insertColumnRight': 'Insert Column Right',\n 'deleteColumn': 'Delete Column',\n 'insertRowBefore': 'Insert Row Before',\n 'insertRowAfter': 'Insert Row After',\n 'deleteRow': 'Delete Row',\n 'tableEditHeader': 'Edit Table',\n 'TableHeadingText': 'Heading',\n 'TableColText': 'Col',\n 'imageInsertLinkHeader': 'Insert Link',\n 'editImageHeader': 'Edit Image',\n \"alignmentsDropDownLeft\": 'Align Left',\n \"alignmentsDropDownCenter\": 'Align Center',\n \"alignmentsDropDownRight\": 'Align Right',\n \"alignmentsDropDownJustify\": 'Align Justify',\n \"imageDisplayDropDownInline\": 'Inline',\n \"imageDisplayDropDownBreak\": 'Break',\n \"tableInsertRowDropDownBefore\": 'Insert row before',\n \"tableInsertRowDropDownAfter\": 'Insert row after',\n \"tableInsertRowDropDownDelete\": 'Delete row',\n \"tableInsertColumnDropDownLeft\": 'Insert column left',\n \"tableInsertColumnDropDownRight\": 'Insert column right',\n \"tableInsertColumnDropDownDelete\": 'Delete column',\n \"tableVerticalAlignDropDownTop\": 'Align Top',\n \"tableVerticalAlignDropDownMiddle\": 'Align Middle',\n \"tableVerticalAlignDropDownBottom\": 'Align Bottom',\n \"tableStylesDropDownDashedBorder\": 'Dashed Borders',\n \"tableStylesDropDownAlternateRows\": 'Alternate Rows',\n 'pasteFormat': 'Paste Format',\n 'pasteFormatContent': 'Choose the formatting action',\n 'plainText': 'Plain Text',\n 'cleanFormat': 'Clean',\n 'keepFormat': 'Keep',\n 'pasteDialogOk': 'OK',\n 'pasteDialogCancel': 'Cancel',\n 'fileManager': 'File Manager',\n 'fileDialogHeader': 'File Browser',\n \"formatsDropDownParagraph\": 'Paragraph',\n 'formatsDropDownCode': 'Code',\n 'formatsDropDownQuotation': 'Quotation',\n 'formatsDropDownHeading1': 'Heading 1',\n 'formatsDropDownHeading2': 'Heading 2',\n 'formatsDropDownHeading3': 'Heading 3',\n 'formatsDropDownHeading4': 'Heading 4',\n 'fontNameSegoeUI': 'Segoe UI',\n 'fontNameArial': 'Arial',\n 'fontNameGeorgia': 'Georgia',\n 'fontNameImpact': 'Impact',\n 'fontNameTahoma': 'Tahoma',\n 'fontNameTimesNewRoman': 'Times New Roman',\n 'fontNameVerdana': 'Verdana',\n 'numberFormatListNumber': 'Number',\n 'numberFormatListLowerAlpha': 'LowerAlpha',\n 'numberFormatListUpperAlpha': 'UpperAlpha',\n 'numberFormatListLowerRoman': 'LowerRoman',\n 'numberFormatListUpperRoman': 'UpperRoman',\n 'numberFormatListLowerGreek': 'LowerGreek',\n 'bulletFormatListDisc': 'Disc',\n 'bulletFormatListCircle': 'Circle',\n 'bulletFormatListSquare': 'Square',\n 'numberFormatListNone': 'None',\n 'bulletFormatListNone': 'None'\n};\nexport var toolsLocale = {\n 'alignments': 'alignments',\n 'justifyleft': 'justifyLeft',\n 'justifycenter': 'justifyCenter',\n 'justifyright': 'justifyRight',\n 'justifyfull': 'justifyFull',\n 'fontname': 'fontName',\n 'fontsize': 'fontSize',\n 'fontcolor': 'fontColor',\n 'backgroundcolor': 'backgroundColor',\n 'bold': 'bold',\n 'italic': 'italic',\n 'underline': 'underline',\n 'strikethrough': 'strikethrough',\n 'clearformat': 'clearFormat',\n 'clearall': 'clearAll',\n 'cut': 'cut',\n 'copy': 'copy',\n 'paste': 'paste',\n 'unorderedlist': 'unorderedList',\n 'orderedlist': 'orderedList',\n 'indent': 'indent',\n 'outdent': 'outdent',\n 'undo': 'undo',\n 'redo': 'redo',\n 'superscript': 'superscript',\n 'subscript': 'subscript',\n 'createlink': 'createLink',\n 'openlink': 'openLink',\n 'editlink': 'editLink',\n 'removelink': 'removeLink',\n 'openimagelink': 'openLink',\n 'editimagelink': 'editLink',\n 'removeimagelink': 'removeLink',\n 'image': 'image',\n 'replace': 'replace',\n 'align': 'align',\n 'caption': 'caption',\n 'remove': 'remove',\n 'insertlink': 'insertLink',\n 'display': 'display',\n 'alttext': 'altText',\n 'dimension': 'dimension',\n 'fullscreen': 'fullscreen',\n 'maximize': 'maximize',\n 'minimize': 'minimize',\n 'lowercase': 'lowerCase',\n 'uppercase': 'upperCase',\n 'print': 'print',\n 'formats': 'formats',\n 'sourcecode': 'sourcecode',\n 'preview': 'preview',\n 'viewside': 'viewside',\n 'insertcode': 'insertCode',\n 'tablerows': 'tableRows',\n 'tablecolumns': 'tableColumns',\n 'tablecellhorizontalalign': 'tableCellHorizontalAlign',\n 'tablecellverticalalign': 'tableCellVerticalAlign',\n 'createtable': 'createTable',\n 'removetable': 'removeTable',\n 'tableheader': 'tableHeader',\n 'tableremove': 'tableRemove',\n 'tablecellbackground': 'tableCellBackground',\n 'tableeditproperties': 'tableEditProperties',\n 'styles': 'styles',\n 'insertcolumnleft': 'insertColumnLeft',\n 'insertcolumnright': 'insertColumnRight',\n 'deletecolumn': 'deleteColumn',\n 'aligntop': 'AlignTop',\n 'alignmiddle': 'AlignMiddle',\n 'alignbottom': 'AlignBottom',\n 'insertrowbefore': 'insertRowBefore',\n 'insertrowafter': 'insertRowAfter',\n 'deleterow': 'deleteRow'\n};\nexport var fontNameLocale = [\n { locale: 'fontNameSegoeUI', value: 'Segoe UI' },\n { locale: 'fontNameArial', value: 'Arial,Helvetica,sans-serif' },\n { locale: 'fontNameGeorgia', value: 'Georgia,serif' },\n { locale: 'fontNameImpact', value: 'Impact,Charcoal,sans-serif' },\n { locale: 'fontNameTahoma', value: 'Tahoma,Geneva,sans-serif' },\n { locale: 'fontNameTimesNewRoman', value: 'Times New Roman,Times,serif' },\n { locale: 'fontNameVerdana', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var formatsLocale = [\n { locale: 'formatsDropDownParagraph', value: 'P' },\n { locale: 'formatsDropDownCode', value: 'Pre' },\n { locale: 'formatsDropDownQuotation', value: 'BlockQuote' },\n { locale: 'formatsDropDownHeading1', value: 'H1' },\n { locale: 'formatsDropDownHeading2', value: 'H2' },\n { locale: 'formatsDropDownHeading3', value: 'H3' },\n { locale: 'formatsDropDownHeading4', value: 'H4' }\n];\nexport var numberFormatListLocale = [\n { locale: 'numberFormatListNone', value: 'none' },\n { locale: 'numberFormatListNumber', value: 'decimal' },\n { locale: 'numberFormatListLowerAlpha', value: 'lower-alpha' },\n { locale: 'numberFormatListUpperAlpha', value: 'upper-alpha' },\n { locale: 'numberFormatListLowerRoman', value: 'lower-roman' },\n { locale: 'numberFormatListUpperRoman', value: 'upper-roman' },\n { locale: 'numberFormatListLowerGreek', value: 'lower-greek' }\n];\nexport var bulletFormatListLocale = [\n { locale: 'bulletFormatListNone', value: 'none' },\n { locale: 'bulletFormatListDisc', value: 'disc' },\n { locale: 'bulletFormatListCircle', value: 'circle' },\n { locale: 'bulletFormatListSquare', value: 'square' },\n];\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/ban-types */\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../../common/model/theme';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex(Theme.stripLineLabelFont, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\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 dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\n/* eslint-disable */\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\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}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\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}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\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// eslint-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 */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\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 */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\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 var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\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 */\n/**\n * @returns {void}\n */\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 */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\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 */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\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 */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\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// eslint-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// eslint-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 /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\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// eslint-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 */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\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(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\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';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\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 *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\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 = formatUnit(this.minHeight);\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 *\n * @returns {void}\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.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n // eslint-disable-next-line\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n // eslint-disable-next-line\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 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.dlgClosedBy = DLG_ESCAPE_CLOSED;\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 // eslint-disable-next-line\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\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 *\n * @returns {void}\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 *\n * @returns {void}\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n open: function (event) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\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 // eslint-disable-next-line\n dragStart: function (event) {\n // eslint-disable-next-line\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\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 * @returns {void}\n * @hidden\n * @value\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : 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 *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 }\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 if (isNullOrUndefined(this.dlgOverlay)) {\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 }\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 *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\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 // eslint-disable-next-line\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 *\n * @returns {void}\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 *\n * @returns {void}\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 *\n * @returns {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 *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {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 closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n // eslint-disable-next-line\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\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 _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\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 *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\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 */\n// eslint-disable-next-line\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 /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\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 /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var 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 rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.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.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('aria-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[count]) {\n rows = rows.concat(_this.infiniteCache[count]);\n }\n }\n }\n }\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.isManualRefresh = false;\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.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n 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 * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n 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 *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n 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(literals.tbody) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.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 gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.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 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() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\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 /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.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 startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !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) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this.rowElements.length >= (args.virtualInfo.blockIndexes.length * this.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this.parent.currentViewData['records'] = this.rows.map(function (m) { return m.data; });\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(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n 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(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody);\n }\n else {\n _this.tbody.innerHTML = '';\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement(literals.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(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.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() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\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 === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\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(literals.ariaRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.ariaRowIndex), 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 *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.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 *\n * @returns {Element} returns the 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 *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var 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() === literals.leftRight) {\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 testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[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() === literals.frozenRight) {\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(literals.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('.' + literals.movableContent).querySelector(literals.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 * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(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(literals.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 this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.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 this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var 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(literals.ariaRowIndex), 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 /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody);\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[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.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[oldIndex], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[oldIndex] && this.rowElements[oldIndex].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[oldIndex] === 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.parent.enableDeepCompare && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.parent.enableDeepCompare && !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(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== next[keys[i]]) {\n var isDate = old[keys[i]] instanceof Date && next[keys[i]] instanceof Date;\n if (!isDate || (old[keys[i]].getTime() !== next[keys[i]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[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 if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.ariaRowIndex, 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 } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[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 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 preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[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 if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[i].isCaptionRow && rowObj[i].indent === indent\n && rowObj[i].data.key === key) {\n preCap = rowObj[i];\n }\n if (rowObj[i].indent === indent || rowObj[i].indent < indent) {\n break;\n }\n if (rowObj[i].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[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.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[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","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[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 var index = this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[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('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.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) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr.querySelector(literals.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(literals.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(literals.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('.' + literals.movableContent)\n .querySelector(literals.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('.' + literals.movableContent)\n .querySelector(literals.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(literals.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 if (!this.parent.enableColumnVirtualization) {\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 }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.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(literals.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 /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.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() === literals.leftRight) {\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 = [literals.gridHeader, literals.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() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\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('.' + literals.table);\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.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('.' + literals.movableHeader).firstElementChild) {\n this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.' + literals.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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.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 (e) {\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 if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n 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 && !(isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('aria-colindex'), 10) === 0 &&\n parseInt(e.target.getAttribute('index'), 10) === 0)) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.parent.element.tabIndex = 0;\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\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, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, 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 if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\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, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null)\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\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 (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (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() === literals.leftRight) {\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.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n 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 // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _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 *\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].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[rowIndex].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\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 this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption'))) {\n 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 var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target : 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() === literals.leftRight && 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(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.ariaRowIndex), 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() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (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(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line max-len\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.ariaRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.ariaColIndex), 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(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.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 this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[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() === literals.leftRight && 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() === literals.leftRight) {\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() === literals.leftRight\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 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","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isInversed ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isInversed ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n *\n * @param {number} x X coordinate\n * @param {number} y Y coodinate\n * @param {Points} point point\n * @param {Rect} rect point rect region\n * @param {Series} series series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isInversed;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n if (value >= series.xAxis.visibleRange.min && value <= series.xAxis.visibleRange.max) {\n for (var i = 0; i < xData.length; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n var closest = this.getClosest(series, value, xvalues);\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (closest === point.xValue && point.visible) {\n return new PointData(point, series);\n }\n }\n return null;\n };\n /**\n * Merge all visible series X values for shared tooltip (EJ2-47072)\n *\n * @param visibleSeries\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n var collection = [];\n for (var index = 0; index < visibleSeries.length; index++) {\n collection = collection.concat(visibleSeries[index].xData);\n }\n return collection.filter(function (item, index) {\n return index === collection.indexOf(item);\n });\n };\n return ChartData;\n}());\nexport { ChartData };\n","/**\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 * 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 * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && _this.navIdx.length && closedLi && !trgtLi) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1) {\n sli_1.classList.add(FOCUSED);\n sli_1.focus();\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.removeAttribute('role');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n if (!_this.isMenu) {\n args.item.removeAttribute('role');\n }\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.classList.contains('e-hide-menu')) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx = id ? id : item.id;\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n var newItem = this.getItem(navIdx);\n newItem.iconCss = item.iconCss;\n newItem.id = item.id;\n newItem.text = item.text;\n newItem.url = item.url;\n newItem.separator = item.separator;\n newItem.items = item.items;\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n this.removeItem(iitems, navIdx, idx);\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","/**\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})();\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})();\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 { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['aria-owns'] = this.getPopUpElement().id,\n _a['type'] = 'button',\n _a['aria-label'] = this.element.textContent + ' dropdownbutton',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: { 'role': 'menuItem', 'tabindex': '-1' },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n if (this.target || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n };\n DropDownButton.prototype.popupWireEvents = function () {\n var popupElement = this.getPopUpElement();\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || this.target) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n if (!this.target) {\n this.createItems(true);\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n ul_1.focus();\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n var popupElement = this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n }\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_2 = _this.getULElement();\n var selectedLi = ul_2.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n if (_this.target) {\n _this.isPopupCreated = _this.createPopupOnClick ? false : true;\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n var arrowSpan = this.element.querySelector('span.e-caret');\n classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // tslint:disable-next-line:variable-name\r\n private __proto__: Error;\r\n\r\n /** The HTTP status code represented by this error. */\r\n public statusCode: number;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage: string, statusCode: number) {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n this.statusCode = statusCode;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // tslint:disable-next-line:variable-name\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // tslint:disable-next-line:variable-name\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { AbortSignal } from \"./AbortController\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\n\r\n/** Represents an HTTP request. */\r\nexport interface HttpRequest {\r\n /** The HTTP method to use for the request. */\r\n method?: string;\r\n\r\n /** The URL for the request. */\r\n url?: string;\r\n\r\n /** The body content for the request. May be a string or an ArrayBuffer (for binary data). */\r\n content?: string | ArrayBuffer;\r\n\r\n /** An object describing headers to apply to the request. */\r\n headers?: MessageHeaders;\r\n\r\n /** The XMLHttpRequestResponseType to apply to the request. */\r\n responseType?: XMLHttpRequestResponseType;\r\n\r\n /** An AbortSignal that can be monitored for cancellation. */\r\n abortSignal?: AbortSignal;\r\n\r\n /** The time to wait for the request to complete before throwing a TimeoutError. Measured in milliseconds. */\r\n timeout?: number;\r\n\r\n /** This controls whether credentials such as cookies are sent in cross-site requests. */\r\n withCredentials?: boolean;\r\n}\r\n\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n */\r\n constructor(statusCode: number);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code and message.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n */\r\n constructor(statusCode: number, statusText: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and string content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: ArrayBuffer);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string | ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string | ArrayBuffer);\r\n constructor(\r\n public readonly statusCode: number,\r\n public readonly statusText?: string,\r\n public readonly content?: string | ArrayBuffer) {\r\n }\r\n}\r\n\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport abstract class HttpClient {\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string): Promise;\r\n\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string, options: HttpRequest): Promise;\r\n public get(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string): Promise;\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string, options: HttpRequest): Promise;\r\n public post(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string): Promise;\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string, options: HttpRequest): Promise;\r\n public delete(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP request to the specified URL, returning a {@link Promise} that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {HttpRequest} request An {@link @microsoft/signalr.HttpRequest} describing the request to send.\r\n * @returns {Promise} A Promise that resolves with an HttpResponse describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public abstract send(request: HttpRequest): Promise;\r\n\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n public getCookieString(url: string): string {\r\n return \"\";\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// @ts-ignore: This will be removed from built files and is here to make the types available during dev work\r\nimport * as tough from \"@types/tough-cookie\";\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\n\r\nexport class FetchHttpClient extends HttpClient {\r\n private readonly abortControllerType: { prototype: AbortController, new(): AbortController };\r\n private readonly fetchType: (input: RequestInfo, init?: RequestInit) => Promise;\r\n private readonly jar?: tough.CookieJar;\r\n\r\n private readonly logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this.logger = logger;\r\n\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this.jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this.fetchType = requireFunc(\"node-fetch\");\r\n\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this.fetchType = requireFunc(\"fetch-cookie\")(this.fetchType, this.jar);\r\n\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this.abortControllerType = requireFunc(\"abort-controller\");\r\n } else {\r\n this.fetchType = fetch.bind(self);\r\n this.abortControllerType = AbortController;\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public async send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n\r\n const abortController = new this.abortControllerType();\r\n\r\n let error: any;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId: any = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout!;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this.logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n\r\n let response: Response;\r\n try {\r\n response = await this.fetchType(request.url!, {\r\n body: request.content!,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"text/plain;charset=UTF-8\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method!,\r\n mode: \"cors\",\r\n redirect: \"manual\",\r\n signal: abortController.signal,\r\n });\r\n } catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this.logger.log(\r\n LogLevel.Warning,\r\n `Error from HTTP request. ${e}.`,\r\n );\r\n throw e;\r\n } finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n throw new HttpError(response.statusText, response.status);\r\n }\r\n\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n\r\n return new HttpResponse(\r\n response.status,\r\n response.statusText,\r\n payload,\r\n );\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n let cookies: string = \"\";\r\n if (Platform.isNode && this.jar) {\r\n // @ts-ignore: unused variable\r\n this.jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\n\r\nfunction deserializeContent(response: Response, responseType?: XMLHttpRequestResponseType): Promise {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n\r\n return content;\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { ILogger } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\n\r\n/** Defines the type of a Hub Message. */\r\nexport enum MessageType {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n Invocation = 1,\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n StreamItem = 2,\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n Completion = 3,\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n StreamInvocation = 4,\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n CancelInvocation = 5,\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n Ping = 6,\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n Close = 7,\r\n}\r\n\r\n/** Defines a dictionary of string keys and string values representing headers attached to a Hub message. */\r\nexport interface MessageHeaders {\r\n /** Gets or sets the header with the specified key. */\r\n [key: string]: string;\r\n}\r\n\r\n/** Union type of all known Hub messages. */\r\nexport type HubMessage =\r\n InvocationMessage |\r\n StreamInvocationMessage |\r\n StreamItemMessage |\r\n CompletionMessage |\r\n CancelInvocationMessage |\r\n PingMessage |\r\n CloseMessage;\r\n\r\n/** Defines properties common to all Hub messages. */\r\nexport interface HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageType} value indicating the type of this message. */\r\n readonly type: MessageType;\r\n}\r\n\r\n/** Defines properties common to all Hub messages relating to a specific invocation. */\r\nexport interface HubInvocationMessage extends HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageHeaders} dictionary containing headers attached to the message. */\r\n readonly headers?: MessageHeaders;\r\n /** The ID of the invocation relating to this message.\r\n *\r\n * This is expected to be present for {@link @microsoft/signalr.StreamInvocationMessage} and {@link @microsoft/signalr.CompletionMessage}. It may\r\n * be 'undefined' for an {@link @microsoft/signalr.InvocationMessage} if the sender does not expect a response.\r\n */\r\n readonly invocationId?: string;\r\n}\r\n\r\n/** A hub message representing a non-streaming invocation. */\r\nexport interface InvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Invocation;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a streaming invocation. */\r\nexport interface StreamInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamInvocation;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a single item produced as part of a result stream. */\r\nexport interface StreamItemMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamItem;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n\r\n /** The item produced by the server. */\r\n readonly item?: any;\r\n}\r\n\r\n/** A hub message representing the result of an invocation. */\r\nexport interface CompletionMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Completion;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The error produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly error?: string;\r\n /** The result produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly result?: any;\r\n}\r\n\r\n/** A hub message indicating that the sender is still active. */\r\nexport interface PingMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Ping;\r\n}\r\n\r\n/** A hub message indicating that the sender is closing the connection.\r\n *\r\n * If {@link @microsoft/signalr.CloseMessage.error} is defined, the sender is closing the connection due to an error.\r\n */\r\nexport interface CloseMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Close;\r\n /** The error that triggered the close, if any.\r\n *\r\n * If this property is undefined, the connection was closed normally and without error.\r\n */\r\n readonly error?: string;\r\n\r\n /** If true, clients with automatic reconnects enabled should attempt to reconnect after receiving the CloseMessage. Otherwise, they should not. */\r\n readonly allowReconnect?: boolean;\r\n}\r\n\r\n/** A hub message sent to request that a streaming invocation be canceled. */\r\nexport interface CancelInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.CancelInvocation;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n}\r\n\r\n/** A protocol abstraction for communicating with SignalR Hubs. */\r\nexport interface IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n readonly name: string;\r\n /** The version of the protocol. */\r\n readonly version: number;\r\n /** The {@link @microsoft/signalr.TransferFormat} of the protocol. */\r\n readonly transferFormat: TransferFormat;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the `input` parameter must be a string, otherwise it must be an ArrayBuffer.\r\n *\r\n * @param {string | ArrayBuffer | Buffer} input A string, ArrayBuffer, or Buffer containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input: string | ArrayBuffer | Buffer, logger: ILogger): HubMessage[];\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string or ArrayBuffer and returns it.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the result of this method will be a string, otherwise it will be an ArrayBuffer.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string | ArrayBuffer} A string or ArrayBuffer containing the serialized representation of the message.\r\n */\r\n writeMessage(message: HubMessage): string | ArrayBuffer;\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\nexport class XhrHttpClient extends HttpClient {\r\n private readonly logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this.logger = logger;\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.open(request.method!, request.url!, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n } else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n this.logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n\r\n xhr.ontimeout = () => {\r\n this.logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n\r\n xhr.send(request.content || \"\");\r\n });\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n private readonly httpClient: HttpClient;\r\n\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n public constructor(logger: ILogger) {\r\n super();\r\n\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this.httpClient = new FetchHttpClient(logger);\r\n } else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this.httpClient = new XhrHttpClient(logger);\r\n } else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return this.httpClient.send(request);\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n return this.httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { IStreamResult, IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { SubjectSubscription } from \"./Utils\";\r\n\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject implements IStreamResult {\r\n /** @internal */\r\n public observers: Array>;\r\n\r\n /** @internal */\r\n public cancelCallback?: () => Promise;\r\n\r\n constructor() {\r\n this.observers = [];\r\n }\r\n\r\n public next(item: T): void {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n\r\n public error(err: any): void {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n\r\n public complete(): void {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n\r\n public subscribe(observer: IStreamSubscriber): ISubscription {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { HandshakeProtocol, HandshakeRequestMessage, HandshakeResponseMessage } from \"./HandshakeProtocol\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { CancelInvocationMessage, CompletionMessage, IHubProtocol, InvocationMessage, MessageType, StreamInvocationMessage, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { IStreamResult } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg } from \"./Utils\";\r\n\r\nconst DEFAULT_TIMEOUT_IN_MS: number = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS: number = 15 * 1000;\r\n\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport enum HubConnectionState {\r\n /** The hub connection is disconnected. */\r\n Disconnected = \"Disconnected\",\r\n /** The hub connection is connecting. */\r\n Connecting = \"Connecting\",\r\n /** The hub connection is connected. */\r\n Connected = \"Connected\",\r\n /** The hub connection is disconnecting. */\r\n Disconnecting = \"Disconnecting\",\r\n /** The hub connection is reconnecting. */\r\n Reconnecting = \"Reconnecting\",\r\n}\r\n\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n private readonly cachedPingMessage: string | ArrayBuffer;\r\n private readonly connection: IConnection;\r\n private readonly logger: ILogger;\r\n private readonly reconnectPolicy?: IRetryPolicy;\r\n private protocol: IHubProtocol;\r\n private handshakeProtocol: HandshakeProtocol;\r\n private callbacks: { [invocationId: string]: (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => void };\r\n private methods: { [name: string]: Array<(...args: any[]) => void> };\r\n private invocationId: number;\r\n\r\n private closedCallbacks: Array<(error?: Error) => void>;\r\n private reconnectingCallbacks: Array<(error?: Error) => void>;\r\n private reconnectedCallbacks: Array<(connectionId?: string) => void>;\r\n\r\n private receivedHandshakeResponse: boolean;\r\n private handshakeResolver!: (value?: PromiseLike<{}>) => void;\r\n private handshakeRejecter!: (reason?: any) => void;\r\n private stopDuringStartError?: Error;\r\n\r\n private connectionState: HubConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private connectionStarted: boolean;\r\n private startPromise?: Promise;\r\n private stopPromise?: Promise;\r\n private nextKeepAlive: number = 0;\r\n\r\n // The type of these a) doesn't matter and b) varies when building in browser and node contexts\r\n // Since we're building the WebPack bundle directly from the TypeScript, this matters (previously\r\n // we built the bundle from the compiled JavaScript).\r\n private reconnectDelayHandle?: any;\r\n private timeoutHandle?: any;\r\n private pingServerHandle?: any;\r\n\r\n /** The server timeout in milliseconds.\r\n *\r\n * If this timeout elapses without receiving any messages from the server, the connection will be terminated with an error.\r\n * The default timeout value is 30,000 milliseconds (30 seconds).\r\n */\r\n public serverTimeoutInMilliseconds: number;\r\n\r\n /** Default interval at which to ping the server.\r\n *\r\n * The default value is 15,000 milliseconds (15 seconds).\r\n * Allows the server to detect hard disconnects (like when a client unplugs their computer).\r\n * The ping will happen at most as often as the server pings.\r\n * If the server pings every 5 seconds, a value lower than 5 will ping every 5 seconds.\r\n */\r\n public keepAliveIntervalInMilliseconds: number;\r\n\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n public static create(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy): HubConnection {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n\r\n private constructor(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy) {\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.reconnectPolicy = reconnectPolicy;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n\r\n this.connection.onreceive = (data: any) => this.processIncomingData(data);\r\n this.connection.onclose = (error?: Error) => this.connectionClosed(error);\r\n\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.reconnectingCallbacks = [];\r\n this.reconnectedCallbacks = [];\r\n this.invocationId = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state(): HubConnectionState {\r\n return this.connectionState;\r\n }\r\n\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId(): string | null {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl(): string {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url: string) {\r\n if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n\r\n this.connection.baseUrl = url;\r\n }\r\n\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n public start(): Promise {\r\n this.startPromise = this.startWithStateTransitions();\r\n return this.startPromise;\r\n }\r\n\r\n private async startWithStateTransitions(): Promise {\r\n if (this.connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this.connectionState = HubConnectionState.Connecting;\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n\r\n try {\r\n await this.startInternal();\r\n\r\n this.connectionState = HubConnectionState.Connected;\r\n this.connectionStarted = true;\r\n this.logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n } catch (e) {\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async startInternal() {\r\n this.stopDuringStartError = undefined;\r\n this.receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this.handshakeResolver = resolve;\r\n this.handshakeRejecter = reject;\r\n });\r\n\r\n await this.connection.start(this.protocol.transferFormat);\r\n\r\n try {\r\n const handshakeRequest: HandshakeRequestMessage = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n\r\n await this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n\r\n this.logger.log(LogLevel.Information, `Using HubProtocol '${this.protocol.name}'.`);\r\n\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n\r\n await handshakePromise;\r\n\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this.stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n throw this.stopDuringStartError;\r\n }\r\n } catch (e) {\r\n this.logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n public async stop(): Promise {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this.startPromise;\r\n\r\n this.stopPromise = this.stopInternal();\r\n await this.stopPromise;\r\n\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n\r\n private stopInternal(error?: Error): Promise {\r\n if (this.connectionState === HubConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this.stopPromise!;\r\n }\r\n\r\n this.connectionState = HubConnectionState.Disconnecting;\r\n\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n\r\n if (this.reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this.logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n\r\n clearTimeout(this.reconnectDelayHandle);\r\n this.reconnectDelayHandle = undefined;\r\n\r\n this.completeClose();\r\n return Promise.resolve();\r\n }\r\n\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n public stream(methodName: string, ...args: any[]): IStreamResult {\r\n const [streams, streamIds] = this.replaceStreamingParams(args);\r\n const invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);\r\n\r\n let promiseQueue: Promise;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation: CancelInvocationMessage = this.createCancelInvocation(invocationDescriptor.invocationId);\r\n\r\n delete this.callbacks[invocationDescriptor.invocationId];\r\n\r\n return promiseQueue.then(() => {\r\n return this.sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n\r\n this.callbacks[invocationDescriptor.invocationId] = (invocationEvent: CompletionMessage | StreamItemMessage | null, error?: Error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n } else {\r\n subject.complete();\r\n }\r\n } else {\r\n subject.next((invocationEvent.item) as T);\r\n }\r\n }\r\n };\r\n\r\n promiseQueue = this.sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n\r\n this.launchStreams(streams, promiseQueue);\r\n\r\n return subject;\r\n }\r\n\r\n private sendMessage(message: any) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n private sendWithProtocol(message: any) {\r\n return this.sendMessage(this.protocol.writeMessage(message));\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n public send(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this.replaceStreamingParams(args);\r\n const sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));\r\n\r\n this.launchStreams(streams, sendPromise);\r\n\r\n return sendPromise;\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n public invoke(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this.replaceStreamingParams(args);\r\n const invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);\r\n\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this.callbacks[invocationDescriptor.invocationId!] = (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n } else {\r\n resolve(invocationEvent.result);\r\n }\r\n } else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n\r\n const promiseQueue = this.sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this.callbacks[invocationDescriptor.invocationId!];\r\n });\r\n\r\n this.launchStreams(streams, promiseQueue);\r\n });\r\n\r\n return p;\r\n }\r\n\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n public on(methodName: string, newMethod: (...args: any[]) => void) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n\r\n this.methods[methodName].push(newMethod);\r\n }\r\n\r\n /** Removes all handlers for the specified hub method.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n */\r\n public off(methodName: string): void;\r\n\r\n /** Removes the specified handler for the specified hub method.\r\n *\r\n * You must pass the exact same Function instance as was previously passed to {@link @microsoft/signalr.HubConnection.on}. Passing a different instance (even if the function\r\n * body is the same) will not remove the handler.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n * @param {Function} method The handler to remove. This must be the same Function instance as the one passed to {@link @microsoft/signalr.HubConnection.on}.\r\n */\r\n public off(methodName: string, method: (...args: any[]) => void): void;\r\n public off(methodName: string, method?: (...args: any[]) => void): void {\r\n if (!methodName) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n const handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n } else {\r\n delete this.methods[methodName];\r\n }\r\n\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n public onclose(callback: (error?: Error) => void) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n public onreconnecting(callback: (error?: Error) => void) {\r\n if (callback) {\r\n this.reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n public onreconnected(callback: (connectionId?: string) => void) {\r\n if (callback) {\r\n this.reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n private processIncomingData(data: any) {\r\n this.cleanupTimeout();\r\n\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this.protocol.parseMessages(data, this.logger);\r\n\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n const callback = this.callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n } else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this.stopPromise = this.stopInternal(error);\r\n }\r\n\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.resetTimeoutPeriod();\r\n }\r\n\r\n private processHandshakeResponse(data: any): any {\r\n let responseMessage: HandshakeResponseMessage;\r\n let remainingData: any;\r\n\r\n try {\r\n [remainingData, responseMessage] = this.handshakeProtocol.parseHandshakeResponse(data);\r\n } catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n } else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n\r\n this.handshakeResolver();\r\n return remainingData;\r\n }\r\n\r\n private resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this.nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n\r\n this.cleanupPingTimer();\r\n }\r\n\r\n private resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n\r\n // Set keepAlive timer if there isn't one\r\n if (this.pingServerHandle === undefined) {\r\n let nextPing = this.nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this.pingServerHandle = setTimeout(async () => {\r\n if (this.connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this.sendMessage(this.cachedPingMessage);\r\n } catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n\r\n private serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n\r\n private invokeClientMethod(invocationMessage: InvocationMessage) {\r\n const methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach((m) => m.apply(this, invocationMessage.arguments));\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e}'.`);\r\n }\r\n\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n const message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n\r\n // We don't want to wait on the stop itself.\r\n this.stopPromise = this.stopInternal(new Error(message));\r\n }\r\n } else {\r\n this.logger.log(LogLevel.Warning, `No client method with the name '${invocationMessage.target}' found.`);\r\n }\r\n }\r\n\r\n private connectionClosed(error?: Error) {\r\n this.logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this.connectionState}.`);\r\n\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this.stopDuringStartError = this.stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this.handshakeResolver) {\r\n this.handshakeResolver();\r\n }\r\n\r\n this.cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose(error);\r\n } else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {\r\n // tslint:disable-next-line:no-floating-promises\r\n this.reconnect(error);\r\n } else if (this.connectionState === HubConnectionState.Connected) {\r\n this.completeClose(error);\r\n }\r\n\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n\r\n private completeClose(error?: Error) {\r\n if (this.connectionStarted) {\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n\r\n try {\r\n this.closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private async reconnect(error?: Error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n\r\n let nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n\r\n if (nextRetryDelay === null) {\r\n this.logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this.completeClose(error);\r\n return;\r\n }\r\n\r\n this.connectionState = HubConnectionState.Reconnecting;\r\n\r\n if (error) {\r\n this.logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n } else {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n\r\n if (this.onreconnecting) {\r\n try {\r\n this.reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n\r\n while (nextRetryDelay !== null) {\r\n this.logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n\r\n await new Promise((resolve) => {\r\n this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay!);\r\n });\r\n this.reconnectDelayHandle = undefined;\r\n\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n\r\n try {\r\n await this.startInternal();\r\n\r\n this.connectionState = HubConnectionState.Connected;\r\n this.logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n\r\n if (this.onreconnected) {\r\n try {\r\n this.reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n\r\n return;\r\n } catch (e) {\r\n this.logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, `Connection moved to the '${this.connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this.connectionState as any === HubConnectionState.Disconnecting) {\r\n this.completeClose();\r\n }\r\n return;\r\n }\r\n\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n\r\n this.logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n\r\n this.completeClose();\r\n }\r\n\r\n private getNextRetryDelay(previousRetryCount: number, elapsedMilliseconds: number, retryReason: Error) {\r\n try {\r\n return this.reconnectPolicy!.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n\r\n private cancelCallbacksWithError(error: Error) {\r\n const callbacks = this.callbacks;\r\n this.callbacks = {};\r\n\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n callback(null, error);\r\n });\r\n }\r\n\r\n private cleanupPingTimer(): void {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n this.pingServerHandle = undefined;\r\n }\r\n }\r\n\r\n private cleanupTimeout(): void {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n }\r\n\r\n private createInvocation(methodName: string, args: any[], nonblocking: boolean, streamIds: string[]): InvocationMessage {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n } else {\r\n const invocationId = this.invocationId;\r\n this.invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n\r\n private launchStreams(streams: Array>, promiseQueue: Promise): void {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // tslint:disable-next-line:forin\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this.sendWithProtocol(this.createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message: string;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n } else if (err && err.toString) {\r\n message = err.toString();\r\n } else {\r\n message = \"Unknown error\";\r\n }\r\n\r\n promiseQueue = promiseQueue.then(() => this.sendWithProtocol(this.createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this.sendWithProtocol(this.createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n\r\n private replaceStreamingParams(args: any[]): [Array>, string[]] {\r\n const streams: Array> = [];\r\n const streamIds: string[] = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this.isObservable(argument)) {\r\n const streamId = this.invocationId;\r\n this.invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n\r\n return [streams, streamIds];\r\n }\r\n\r\n private isObservable(arg: any): arg is IStreamResult {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n\r\n private createStreamInvocation(methodName: string, args: any[], streamIds: string[]): StreamInvocationMessage {\r\n const invocationId = this.invocationId;\r\n this.invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n\r\n private createCancelInvocation(id: string): CancelInvocationMessage {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n\r\n private createStreamItemMessage(id: string, item: any): StreamItemMessage {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n\r\n private createCompletionMessage(id: string, error?: any, result?: any): CompletionMessage {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport enum HttpTransportType {\r\n /** Specifies no transport preference. */\r\n None = 0,\r\n /** Specifies the WebSockets transport. */\r\n WebSockets = 1,\r\n /** Specifies the Server-Sent Events transport. */\r\n ServerSentEvents = 2,\r\n /** Specifies the Long Polling transport. */\r\n LongPolling = 4,\r\n}\r\n\r\n/** Specifies the transfer format for a connection. */\r\nexport enum TransferFormat {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n Text = 1,\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n Binary = 2,\r\n}\r\n\r\n/** An abstraction over the behavior of transports. This is designed to support the framework and not intended for use by applications. */\r\nexport interface ITransport {\r\n connect(url: string, transferFormat: TransferFormat): Promise;\r\n send(data: any): Promise;\r\n stop(): Promise;\r\n onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n onclose: ((error?: Error) => void) | null;\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { IRetryPolicy, RetryContext } from \"./IRetryPolicy\";\r\n\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n\r\n/** @private */\r\nexport class DefaultReconnectPolicy implements IRetryPolicy {\r\n private readonly retryDelays: Array;\r\n\r\n constructor(retryDelays?: number[]) {\r\n this.retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n\r\n public nextRetryDelayInMilliseconds(retryContext: RetryContext): number | null {\r\n return this.retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController implements AbortSignal {\r\n private isAborted: boolean = false;\r\n public onabort: (() => void) | null = null;\r\n\r\n public abort() {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n\r\n get signal(): AbortSignal {\r\n return this;\r\n }\r\n\r\n get aborted(): boolean {\r\n return this.isAborted;\r\n }\r\n}\r\n\r\n/** Represents a signal that can be monitored to determine if a request has been aborted. */\r\nexport interface AbortSignal {\r\n /** Indicates if the request has been aborted. */\r\n aborted: boolean;\r\n /** Set this to a handler that will be invoked when the request is aborted. */\r\n onabort: (() => void) | null;\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport implements ITransport {\r\n private readonly httpClient: HttpClient;\r\n private readonly accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly logger: ILogger;\r\n private readonly logMessageContent: boolean;\r\n private readonly withCredentials: boolean;\r\n private readonly pollAbort: AbortController;\r\n private readonly headers: MessageHeaders;\r\n\r\n private url?: string;\r\n private running: boolean;\r\n private receiving?: Promise;\r\n private closeError?: Error;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n public get pollAborted() {\r\n return this.pollAbort.aborted;\r\n }\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger, logMessageContent: boolean, withCredentials: boolean, headers: MessageHeaders) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.withCredentials = withCredentials;\r\n this.headers = headers;\r\n\r\n this.running = false;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this.url = url;\r\n\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this.headers };\r\n\r\n const pollOptions: HttpRequest = {\r\n abortSignal: this.pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this.withCredentials,\r\n };\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n\r\n const token = await this.getAccessToken();\r\n this.updateHeaderToken(pollOptions, token);\r\n\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this.logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this.httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n } else {\r\n this.running = true;\r\n }\r\n\r\n this.receiving = this.poll(this.url, pollOptions);\r\n }\r\n\r\n private async getAccessToken(): Promise {\r\n if (this.accessTokenFactory) {\r\n return await this.accessTokenFactory();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private updateHeaderToken(request: HttpRequest, token: string | null) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = `Bearer ${token}`;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n }\r\n\r\n private async poll(url: string, pollOptions: HttpRequest): Promise {\r\n try {\r\n while (this.running) {\r\n // We have to get the access token on each poll, in case it changes\r\n const token = await this.getAccessToken();\r\n this.updateHeaderToken(pollOptions, token);\r\n\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this.logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this.httpClient.get(pollUrl, pollOptions);\r\n\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n\r\n this.running = false;\r\n } else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n } else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n } else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n } catch (e) {\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n } else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n } else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e;\r\n this.running = false;\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n }\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this.running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url!, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers);\r\n }\r\n\r\n public async stop(): Promise {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n\r\n try {\r\n await this.receiving;\r\n\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this.url}.`);\r\n\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const deleteOptions: HttpRequest = {\r\n headers: { ...headers, ...this.headers },\r\n withCredentials: this.withCredentials,\r\n };\r\n const token = await this.getAccessToken();\r\n this.updateHeaderToken(deleteOptions, token);\r\n await this.httpClient.delete(this.url!, deleteOptions);\r\n\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n } finally {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n }\r\n }\r\n\r\n private raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { EventSourceConstructor } from \"./Polyfills\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class ServerSentEventsTransport implements ITransport {\r\n private readonly httpClient: HttpClient;\r\n private readonly accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly logger: ILogger;\r\n private readonly logMessageContent: boolean;\r\n private readonly withCredentials: boolean;\r\n private readonly eventSourceConstructor: EventSourceConstructor;\r\n private eventSource?: EventSource;\r\n private url?: string;\r\n private headers: MessageHeaders;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger,\r\n logMessageContent: boolean, eventSourceConstructor: EventSourceConstructor, withCredentials: boolean, headers: MessageHeaders) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.withCredentials = withCredentials;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.headers = headers;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n\r\n if (this.accessTokenFactory) {\r\n const token = await this.accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n\r\n let eventSource: EventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this.eventSourceConstructor(url, { withCredentials: this.withCredentials });\r\n } else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this.httpClient.getCookieString(url);\r\n const headers: MessageHeaders = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n eventSource = new this.eventSourceConstructor(url, { withCredentials: this.withCredentials, headers: { ...headers, ...this.headers} } as EventSourceInit);\r\n }\r\n\r\n try {\r\n eventSource.onmessage = (e: MessageEvent) => {\r\n if (this.onreceive) {\r\n try {\r\n this.logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n } catch (error) {\r\n this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n eventSource.onerror = (e: MessageEvent) => {\r\n const error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n this.close(error);\r\n } else {\r\n reject(error);\r\n }\r\n };\r\n\r\n eventSource.onopen = () => {\r\n this.logger.log(LogLevel.Information, `SSE connected to ${this.url}`);\r\n this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n } catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this.eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this.logger, \"SSE\", this.httpClient, this.url!, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers);\r\n }\r\n\r\n public stop(): Promise {\r\n this.close();\r\n return Promise.resolve();\r\n }\r\n\r\n private close(e?: Error) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { WebSocketConstructor } from \"./Polyfills\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class WebSocketTransport implements ITransport {\r\n private readonly logger: ILogger;\r\n private readonly accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly logMessageContent: boolean;\r\n private readonly webSocketConstructor: WebSocketConstructor;\r\n private readonly httpClient: HttpClient;\r\n private webSocket?: WebSocket;\r\n private headers: MessageHeaders;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger,\r\n logMessageContent: boolean, webSocketConstructor: WebSocketConstructor, headers: MessageHeaders) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this.headers = headers;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n\r\n if (this.accessTokenFactory) {\r\n const token = await this.accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket: WebSocket | undefined;\r\n const cookies = this.httpClient.getCookieString(url);\r\n let opened = false;\r\n\r\n if (Platform.isNode) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n if (cookies) {\r\n headers[`Cookie`] = `${cookies}`;\r\n }\r\n\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this.webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this.headers },\r\n });\r\n }\r\n\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this.webSocketConstructor(url);\r\n }\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = (_event: Event) => {\r\n this.logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this.webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n\r\n webSocket.onerror = (event: Event) => {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n\r\n reject(error);\r\n };\r\n\r\n webSocket.onmessage = (message: MessageEvent) => {\r\n this.logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n } catch (error) {\r\n this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n webSocket.onclose = (event: CloseEvent) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this.close(event);\r\n } else {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n\r\n reject(error);\r\n }\r\n };\r\n });\r\n }\r\n\r\n public send(data: any): Promise {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this.logMessageContent)}.`);\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n\r\n public stop(): Promise {\r\n if (this.webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private close(event?: CloseEvent | Error): void {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = () => {};\r\n this.webSocket.onmessage = () => {};\r\n this.webSocket.onerror = () => {};\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n }\r\n\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this.isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason}).`));\r\n } else if (event instanceof Error) {\r\n this.onclose(event);\r\n } else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n\r\n private isCloseEvent(event?: any): event is CloseEvent {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, ITransport, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\n\r\n/** @private */\r\nconst enum ConnectionState {\r\n Connecting = \"Connecting\",\r\n Connected = \"Connected\",\r\n Disconnected = \"Disconnected\",\r\n Disconnecting = \"Disconnecting\",\r\n}\r\n\r\n/** @private */\r\nexport interface INegotiateResponse {\r\n connectionId?: string;\r\n connectionToken?: string;\r\n negotiateVersion?: number;\r\n availableTransports?: IAvailableTransport[];\r\n url?: string;\r\n accessToken?: string;\r\n error?: string;\r\n}\r\n\r\n/** @private */\r\nexport interface IAvailableTransport {\r\n transport: keyof typeof HttpTransportType;\r\n transferFormats: Array;\r\n}\r\n\r\nconst MAX_REDIRECTS = 100;\r\n\r\n/** @private */\r\nexport class HttpConnection implements IConnection {\r\n private connectionState: ConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private connectionStarted: boolean;\r\n private readonly httpClient: HttpClient;\r\n private readonly logger: ILogger;\r\n private readonly options: IHttpConnectionOptions;\r\n private transport?: ITransport;\r\n private startInternalPromise?: Promise;\r\n private stopPromise?: Promise;\r\n private stopPromiseResolver: (value?: PromiseLike) => void = () => {};\r\n private stopError?: Error;\r\n private accessTokenFactory?: () => string | Promise;\r\n private sendQueue?: TransportSendQueue;\r\n\r\n public readonly features: any = {};\r\n public baseUrl: string;\r\n public connectionId?: string;\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((e?: Error) => void) | null;\r\n\r\n private readonly negotiateVersion: number = 1;\r\n\r\n constructor(url: string, options: IHttpConnectionOptions = {}) {\r\n Arg.isRequired(url, \"url\");\r\n\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n } else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n\r\n let webSocketModule: any = null;\r\n let eventSourceModule: any = null;\r\n\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n } else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n } else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = ConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n this.options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public start(): Promise;\r\n public start(transferFormat: TransferFormat): Promise;\r\n public async start(transferFormat?: TransferFormat): Promise {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this.logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n\r\n if (this.connectionState !== ConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this.connectionState = ConnectionState.Connecting;\r\n\r\n this.startInternalPromise = this.startInternal(transferFormat);\r\n await this.startInternalPromise;\r\n\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this.connectionState as any === ConnectionState.Disconnecting) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this.logger.log(LogLevel.Error, message);\r\n\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this.stopPromise;\r\n\r\n return Promise.reject(new Error(message));\r\n } else if (this.connectionState as any !== ConnectionState.Connected) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this.logger.log(LogLevel.Error, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n\r\n this.connectionStarted = true;\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n if (this.connectionState !== ConnectionState.Connected) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n\r\n if (!this.sendQueue) {\r\n this.sendQueue = new TransportSendQueue(this.transport!);\r\n }\r\n\r\n // Transport will not be null if state is connected\r\n return this.sendQueue.send(data);\r\n }\r\n\r\n public async stop(error?: Error): Promise {\r\n if (this.connectionState === ConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.connectionState === ConnectionState.Disconnecting) {\r\n this.logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this.stopPromise;\r\n }\r\n\r\n this.connectionState = ConnectionState.Disconnecting;\r\n\r\n this.stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this.stopPromiseResolver = resolve;\r\n });\r\n\r\n // stopInternal should never throw so just observe it.\r\n await this.stopInternal(error);\r\n await this.stopPromise;\r\n }\r\n\r\n private async stopInternal(error?: Error): Promise {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n\r\n try {\r\n await this.startInternalPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this.stopConnection();\r\n }\r\n\r\n this.transport = undefined;\r\n } else {\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n\r\n private async startInternal(transferFormat: TransferFormat): Promise {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n\r\n try {\r\n if (this.options.skipNegotiation) {\r\n if (this.options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this.startTransport(url, transferFormat);\r\n } else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n } else {\r\n let negotiateResponse: INegotiateResponse | null = null;\r\n let redirects = 0;\r\n\r\n do {\r\n negotiateResponse = await this.getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this.connectionState === ConnectionState.Disconnecting || this.connectionState === ConnectionState.Disconnected) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n\r\n if ((negotiateResponse as any).ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this.accessTokenFactory = () => accessToken;\r\n }\r\n\r\n redirects++;\r\n }\r\n while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n\r\n await this.createTransport(url, this.options.transport, negotiateResponse, transferFormat);\r\n }\r\n\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n\r\n if (this.connectionState === ConnectionState.Connecting) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this.logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this.connectionState = ConnectionState.Connected;\r\n }\r\n\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this.connectionState = ConnectionState.Disconnected;\r\n this.transport = undefined;\r\n\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this.stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async getNegotiationResponse(url: string): Promise {\r\n const headers = {};\r\n if (this.accessTokenFactory) {\r\n const token = await this.accessTokenFactory();\r\n if (token) {\r\n headers[`Authorization`] = `Bearer ${token}`;\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this.options.headers },\r\n withCredentials: this.options.withCredentials,\r\n });\r\n\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n\r\n const negotiateResponse = JSON.parse(response.content as string) as INegotiateResponse;\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private createConnectUrl(url: string, connectionToken: string | null | undefined) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n\r\n private async createTransport(url: string, requestedTransport: HttpTransportType | ITransport | undefined, negotiateResponse: INegotiateResponse, requestedTransferFormat: TransferFormat): Promise {\r\n let connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this.isITransport(requestedTransport)) {\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this.startTransport(connectUrl, requestedTransferFormat);\r\n\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n\r\n const transportExceptions: any[] = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate: INegotiateResponse | undefined = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed: ${transportOrError}`);\r\n } else if (this.isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this.getNegotiationResponse(url);\r\n } catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this.createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this.startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n } catch (ex) {\r\n this.logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(`${endpoint.transport} failed: ${ex}`);\r\n\r\n if (this.connectionState !== ConnectionState.Connecting) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this.logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new Error(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n\r\n private constructTransport(transport: HttpTransportType): ITransport {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket, this.options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource, this.options.withCredentials!, this.options.headers || {});\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.withCredentials!, this.options.headers || {});\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n\r\n private startTransport(url: string, transferFormat: TransferFormat): Promise {\r\n this.transport!.onreceive = this.onreceive;\r\n this.transport!.onclose = (e) => this.stopConnection(e);\r\n return this.transport!.connect(url, transferFormat);\r\n }\r\n\r\n private resolveTransportOrError(endpoint: IAvailableTransport, requestedTransport: HttpTransportType | undefined, requestedTransferFormat: TransferFormat): ITransport | Error {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n } else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new Error(`'${HttpTransportType[transport]}' is not supported in your environment.`);\r\n } else {\r\n this.logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this.constructTransport(transport);\r\n } catch (ex) {\r\n return ex;\r\n }\r\n }\r\n } else {\r\n this.logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n } else {\r\n this.logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new Error(`'${HttpTransportType[transport]}' is disabled by the client.`);\r\n }\r\n }\r\n }\r\n\r\n private isITransport(transport: any): transport is ITransport {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n\r\n private stopConnection(error?: Error): void {\r\n this.logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this.connectionState}.`);\r\n\r\n this.transport = undefined;\r\n\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n this.stopError = undefined;\r\n\r\n if (this.connectionState === ConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n\r\n if (this.connectionState === ConnectionState.Connecting) {\r\n this.logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n\r\n if (this.connectionState === ConnectionState.Disconnecting) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this.stopPromiseResolver();\r\n }\r\n\r\n if (error) {\r\n this.logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n } else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n\r\n if (this.sendQueue) {\r\n this.sendQueue.stop().catch((e) => {\r\n this.logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this.sendQueue = undefined;\r\n }\r\n\r\n this.connectionId = undefined;\r\n this.connectionState = ConnectionState.Disconnected;\r\n\r\n if (this.connectionStarted) {\r\n this.connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n } catch (e) {\r\n this.logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private resolveUrl(url: string): string {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n\r\n if (!Platform.isBrowser || !window.document) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n\r\n this.logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n\r\n private resolveNegotiateUrl(url: string): string {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this.negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\n\r\nfunction transportMatches(requestedTransport: HttpTransportType | undefined, actualTransport: HttpTransportType) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n\r\n/** @private */\r\nexport class TransportSendQueue {\r\n private buffer: any[] = [];\r\n private sendBufferedData: PromiseSource;\r\n private executing: boolean = true;\r\n private transportResult?: PromiseSource;\r\n private sendLoopPromise: Promise;\r\n\r\n constructor(private readonly transport: ITransport) {\r\n this.sendBufferedData = new PromiseSource();\r\n this.transportResult = new PromiseSource();\r\n\r\n this.sendLoopPromise = this.sendLoop();\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n this.bufferData(data);\r\n if (!this.transportResult) {\r\n this.transportResult = new PromiseSource();\r\n }\r\n return this.transportResult.promise;\r\n }\r\n\r\n public stop(): Promise {\r\n this.executing = false;\r\n this.sendBufferedData.resolve();\r\n return this.sendLoopPromise;\r\n }\r\n\r\n private bufferData(data: string | ArrayBuffer): void {\r\n if (this.buffer.length && typeof(this.buffer[0]) !== typeof(data)) {\r\n throw new Error(`Expected data to be of type ${typeof(this.buffer)} but was of type ${typeof(data)}`);\r\n }\r\n\r\n this.buffer.push(data);\r\n this.sendBufferedData.resolve();\r\n }\r\n\r\n private async sendLoop(): Promise {\r\n while (true) {\r\n await this.sendBufferedData.promise;\r\n\r\n if (!this.executing) {\r\n if (this.transportResult) {\r\n this.transportResult.reject(\"Connection stopped.\");\r\n }\r\n\r\n break;\r\n }\r\n\r\n this.sendBufferedData = new PromiseSource();\r\n\r\n const transportResult = this.transportResult!;\r\n this.transportResult = undefined;\r\n\r\n const data = typeof(this.buffer[0]) === \"string\" ?\r\n this.buffer.join(\"\") :\r\n TransportSendQueue.concatBuffers(this.buffer);\r\n\r\n this.buffer.length = 0;\r\n\r\n try {\r\n await this.transport.send(data);\r\n transportResult.resolve();\r\n } catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n\r\n private static concatBuffers(arrayBuffers: ArrayBuffer[]): ArrayBuffer {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n\r\n return result.buffer;\r\n }\r\n}\r\n\r\nclass PromiseSource {\r\n private resolver?: () => void;\r\n private rejecter!: (reason?: any) => void;\r\n public promise: Promise;\r\n\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this.resolver, this.rejecter] = [resolve, reject]);\r\n }\r\n\r\n public resolve(): void {\r\n this.resolver!();\r\n }\r\n\r\n public reject(reason?: any): void {\r\n this.rejecter!(reason);\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { CompletionMessage, HubMessage, IHubProtocol, InvocationMessage, MessageType, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\n\r\nconst JSON_HUB_PROTOCOL_NAME: string = \"json\";\r\n\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol implements IHubProtocol {\r\n\r\n /** @inheritDoc */\r\n public readonly name: string = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n public readonly version: number = 1;\r\n\r\n /** @inheritDoc */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Text;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n public parseMessages(input: string, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n\r\n if (!input) {\r\n return [];\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message) as HubMessage;\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n\r\n private isInvocationMessage(message: InvocationMessage): void {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n\r\n private isStreamItemMessage(message: StreamItemMessage): void {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n\r\n private isCompletionMessage(message: CompletionMessage): void {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n private assertNotEmptyString(value: any, errorMessage: string): void {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { IHubProtocol } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { HttpTransportType } from \"./ITransport\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n\r\n// tslint:disable:object-literal-sort-keys\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\n\r\nfunction parseLogLevel(name: string): LogLevel {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n } else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n /** @internal */\r\n public protocol?: IHubProtocol;\r\n /** @internal */\r\n public httpConnectionOptions?: IHttpConnectionOptions;\r\n /** @internal */\r\n public url?: string;\r\n /** @internal */\r\n public logger?: ILogger;\r\n\r\n /** If defined, this indicates the client should automatically attempt to reconnect if the connection is lost. */\r\n /** @internal */\r\n public reconnectPolicy?: IRetryPolicy;\r\n\r\n /** Configures console logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel} logLevel The minimum level of messages to log. Anything at this level, or a more severe level, will be logged.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logLevel: LogLevel): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {ILogger} logger An object implementing the {@link @microsoft/signalr.ILogger} interface, which will be used to write all log messages.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logger: ILogger): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {string} logLevel A string representing a LogLevel setting a minimum level of messages to log.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n */\r\n public configureLogging(logLevel: string): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel | string | ILogger} logging A {@link @microsoft/signalr.LogLevel}, a string representing a LogLevel, or an object implementing the {@link @microsoft/signalr.ILogger} interface.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder;\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder {\r\n Arg.isRequired(logging, \"logging\");\r\n\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n } else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n } else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * The transport will be selected automatically based on what the server and client support.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified HTTP-based transport to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {HttpTransportType} transportType The specific transport to use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, transportType: HttpTransportType): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {IHttpConnectionOptions} options An options object used to configure the connection.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, options: IHttpConnectionOptions): HubConnectionBuilder;\r\n public withUrl(url: string, transportTypeOrOptions?: IHttpConnectionOptions | HttpTransportType): HubConnectionBuilder {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n\r\n this.url = url;\r\n\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n } else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n public withHubProtocol(protocol: IHubProtocol): HubConnectionBuilder {\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n * By default, the client will wait 0, 2, 10 and 30 seconds respectively before trying up to 4 reconnect attempts.\r\n */\r\n public withAutomaticReconnect(): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {number[]} retryDelays An array containing the delays in milliseconds before trying each reconnect attempt.\r\n * The length of the array represents how many failed reconnect attempts it takes before the client will stop attempting to reconnect.\r\n */\r\n public withAutomaticReconnect(retryDelays: number[]): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {IRetryPolicy} reconnectPolicy An {@link @microsoft/signalR.IRetryPolicy} that controls the timing and number of reconnect attempts.\r\n */\r\n public withAutomaticReconnect(reconnectPolicy: IRetryPolicy): HubConnectionBuilder;\r\n public withAutomaticReconnect(retryDelaysOrReconnectPolicy?: number[] | IRetryPolicy): HubConnectionBuilder {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n } else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n } else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n public build(): HubConnection {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n\r\n return HubConnection.create(\r\n connection,\r\n this.logger || NullLogger.instance,\r\n this.protocol || new JsonHubProtocol(),\r\n this.reconnectPolicy);\r\n }\r\n}\r\n\r\nfunction isLogger(logger: any): logger is ILogger {\r\n return logger.log !== undefined;\r\n}\r\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `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","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","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\"\r\nimport { IConfiguration } from \"../JavaScriptSDK.Interfaces/IConfiguration\"\r\nimport { _InternalMessageId, LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\nimport { IDiagnosticLogger } from \"../JavaScriptSDK.Interfaces/IDiagnosticLogger\";\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { hasJSON, getJSON } from \"./EnvUtils\";\r\nimport { AppInsightsCore } from \"./AppInsightsCore\";\r\n\r\nexport class _InternalLogMessage{\r\n public static dataType: string = \"MessageData\";\r\n\r\n /**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\n private static AiNonUserActionablePrefix = \"AI (Internal): \";\r\n\r\n /**\r\n * Prefix of the traces in portal.\r\n */\r\n private static AiUserActionablePrefix = \"AI: \";\r\n\r\n private static sanitizeDiagnosticText(text: string) {\r\n if (text) {\r\n return \"\\\"\" + text.replace(/\\\"/g, \"\") + \"\\\"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n public message: string;\r\n public messageId: _InternalMessageId;\r\n\r\n constructor(msgId: _InternalMessageId, msg: string, isUserAct = false, properties?: Object) {\r\n\r\n this.messageId = msgId;\r\n this.message =\r\n (isUserAct ? _InternalLogMessage.AiUserActionablePrefix : _InternalLogMessage.AiNonUserActionablePrefix) +\r\n msgId;\r\n\r\n let strProps:string = \"\";\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n const diagnosticText =\r\n (msg ? \" message:\" + _InternalLogMessage.sanitizeDiagnosticText(msg) : \"\") +\r\n (properties ? \" props:\" + _InternalLogMessage.sanitizeDiagnosticText(strProps) : \"\");\r\n\r\n this.message += diagnosticText;\r\n }\r\n}\r\n\r\nexport class DiagnosticLogger implements IDiagnosticLogger {\r\n\r\n /**\r\n * The internal logging queue\r\n */\r\n public queue: _InternalLogMessage[] = [];\r\n\r\n /**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\n private AIInternalMessagePrefix: string = \"AITR_\";\r\n\r\n /**\r\n * Count of internal messages sent\r\n */\r\n private _messageCount = 0;\r\n\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n private _messageLogged: { [msg: number]: boolean } = {};\r\n\r\n constructor(config?: IConfiguration) {\r\n if (CoreUtils.isNullOrUndefined(config)) {\r\n // TODO: Use default config\r\n // config = AppInsightsCore.defaultConfig;\r\n\r\n // For now, use defaults specified in DiagnosticLogger members;\r\n return;\r\n }\r\n if (!CoreUtils.isNullOrUndefined(config.loggingLevelConsole)) {\r\n this.consoleLoggingLevel = () => config.loggingLevelConsole;\r\n }\r\n if (!CoreUtils.isNullOrUndefined(config.loggingLevelTelemetry)) {\r\n this.telemetryLoggingLevel = () => config.loggingLevelTelemetry;\r\n }\r\n if (!CoreUtils.isNullOrUndefined(config.maxMessageLimit)) {\r\n this.maxInternalMessageLimit = () => config.maxMessageLimit\r\n }\r\n if (!CoreUtils.isNullOrUndefined(config.enableDebugExceptions)) {\r\n this.enableDebugExceptions = () => config.enableDebugExceptions;\r\n }\r\n }\r\n\r\n /**\r\n * When this is true the SDK will throw exceptions to aid in debugging.\r\n */\r\n public enableDebugExceptions = () => false;\r\n\r\n /**\r\n * 0: OFF (default)\r\n * 1: CRITICAL\r\n * 2: >= WARNING\r\n */\r\n public consoleLoggingLevel = () => 0;\r\n\r\n /**\r\n * 0: OFF\r\n * 1: CRITICAL (default)\r\n * 2: >= WARNING\r\n */\r\n public telemetryLoggingLevel = () => 1;\r\n\r\n /**\r\n * The maximum number of internal messages allowed to be sent per page view\r\n */\r\n public maxInternalMessageLimit = () => 25;\r\n\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n public throwInternal(severity: LoggingSeverity, msgId: _InternalMessageId, msg: string, properties?: Object, isUserAct = false) {\r\n const message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n let _this = this;\r\n\r\n if (_this.enableDebugExceptions()) {\r\n throw message;\r\n } else {\r\n if (!CoreUtils.isUndefined(message) && !!message) {\r\n if (!CoreUtils.isUndefined(message.message)) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n const messageKey: number = +message.messageId;\r\n\r\n if (!_this._messageLogged[messageKey] && _this.consoleLoggingLevel() >= LoggingSeverity.WARNING) {\r\n _this.warnToConsole(message.message);\r\n _this._messageLogged[messageKey] = true;\r\n }\r\n } else {\r\n // don't log internal AI traces in the console, unless the verbose logging is enabled\r\n if (_this.consoleLoggingLevel() >= LoggingSeverity.WARNING) {\r\n _this.warnToConsole(message.message);\r\n }\r\n }\r\n\r\n _this.logInternalMessage(severity, message);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n public warnToConsole(message: string) {\r\n if (!CoreUtils.isUndefined(console) && !!console) {\r\n if (CoreUtils.isFunction(console.warn)) {\r\n console.warn(message);\r\n } else if (CoreUtils.isFunction(console.log)) {\r\n console.log(message);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Resets the internal message count\r\n */\r\n public resetInternalMessageCount(): void {\r\n this._messageCount = 0;\r\n this._messageLogged = {};\r\n }\r\n\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n public logInternalMessage(severity: LoggingSeverity, message: _InternalLogMessage): void {\r\n let _this = this;\r\n if (_this._areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n let logMessage = true;\r\n const messageKey = _this.AIInternalMessagePrefix + message.messageId;\r\n\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_this._messageLogged[messageKey]) {\r\n logMessage = false;\r\n } else {\r\n _this._messageLogged[messageKey] = true;\r\n }\r\n\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _this.telemetryLoggingLevel()) {\r\n _this.queue.push(message);\r\n _this._messageCount++;\r\n }\r\n\r\n // When throttle limit reached, send a special event\r\n if (_this._messageCount === _this.maxInternalMessageLimit()) {\r\n const throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n const throttleMessage = new _InternalLogMessage(_InternalMessageId.MessageLimitPerPVExceeded, throttleLimitMessage, false);\r\n\r\n _this.queue.push(throttleMessage);\r\n _this.warnToConsole(throttleLimitMessage);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Indicates whether the internal events are throttled\r\n */\r\n private _areInternalMessagesThrottled(): boolean {\r\n return this._messageCount >= this.maxInternalMessageLimit();\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons' });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[count].field === column.field || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[count].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n if (isReactCompiler) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[str]);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu' }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[j].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var result;\n var fKeyValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n if (isReactCompiler) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node.innerHTML = cell.column.headerText + ': ' + value;\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\n }));\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon'\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && _this.parent.contentModule.getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n if (args.requestType !== 'virtualscroll' && args.requestType !== 'infiniteScroll') {\n this.parent.showSpinner();\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody);\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type) {\n columns[i].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[i].type = columns[i].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || (columns[i].format.format &&\n typeof columns[i].format.format === 'string'))) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n setFormatter(this.locator, columns[i]);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n _this.renderEmptyRow();\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[e] !== 'BlazId'; }).\n map(function (field) { return complexCols[field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[index];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[i].field).and(_this.getPredicate('key', 'equal', groups[i].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n var itemGroup = elements[i].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[l] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[k].customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[i].aggregates[key] = temp ? temp.call(context, data_1, row.columns[k]) : '';\n }\n else {\n // eslint-disable-next-line max-len\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n this.cellRenderMap[name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","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 } 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';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.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.deSelectedData = [];\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.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() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[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 *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n 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 if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.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 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\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 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 this.onActionComplete(args, events.rowSelected);\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() === literals.leftRight && 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() === literals.leftRight && 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 *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var 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 this.activeTarget();\n var 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 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() === literals.leftRight ? 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 args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var 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 this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n 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 this.activeTarget();\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 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 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 this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.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 *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var 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 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 var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[i]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[i]]);\n }\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) {\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 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) {\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 isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[dataTxt] = rowDeselectObj[dataTxt][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, 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 *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.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 *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = 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 var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n 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 data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = 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 data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[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 data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n 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() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? 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() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[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 = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var 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(literals.ariaColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\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(literals.ariaColIndex), 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(literals.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(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[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 *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n 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() === literals.leftRight) {\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].getElementsByClassName('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(literals.ariaRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.ariaColIndex), 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, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\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() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 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() === literals.leftRight) {\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() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.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() === literals.leftRight) {\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() === literals.leftRight) {\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() === literals.leftRight) {\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() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\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, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[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() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.ariaColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.ariaColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.ariaRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.ariaColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.ariaColIndex), 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(literals.ariaRowIndex), 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(literals.ariaRowIndex), 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, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n e.target.classList.contains(literals.rowCell)) {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n var cellIndex = parseInt(target.getAttribute(literals.ariaColIndex), 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, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n 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 * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.ariaColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.ariaColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.ariaRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.ariaColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.ariaColIndex), 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 * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n };\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 Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && 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 if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\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 var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n 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()) {\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() === literals.leftRight) {\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.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\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(literals.ariaRowIndex), 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 if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[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 = e.data;\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 this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[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() ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (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 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, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.ariaColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? 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 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 var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n 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 && (this.getData().length && 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 (!this.selectedRowIndexes.length ||\n checkedLen === 0 && 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 (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.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.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.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, literals.rowCell);\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.ariaColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.ariaRowIndex));\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, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.ariaColIndex));\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 (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n 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 *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.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(literals.ariaColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[cIndex];\n }\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[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.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[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 *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[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 *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[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 *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\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().getElementsByClassName('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('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\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() === literals.frozenRight) {\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(literals.row)) {\n if ((rows[j].classList.contains(literals.editedRow) || rows[j].classList.contains(literals.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 // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\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 } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.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(literals.tbody);\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n 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 * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n };\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('.' + literals.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(literals.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(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n 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 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(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === \"HTML\" || node.tagName === \"BODY\") {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n if (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (this.parentElement) {\n EventHandler.add(this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement, 'scroll', this.makeStickyHeader, this);\n }\n }\n else {\n EventHandler.remove(this.parentElement, 'scroll', this.makeStickyHeader);\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.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 if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_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('.' + literals.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('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.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('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove padding\n this.removePadding();\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Clipboard(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[rIdx];\n var mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[rIdx];\n isAvail = frTr.querySelector('[aria-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': 'clipboard' }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.parent.getVisibleColumns()[i].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[selectedIndexes[i]].\n querySelectorAll('.e-rowcell:not(.e-hide)'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[i]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[i]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[i]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[j].getAttribute(literals.ariaColIndex), 10);\n this.copyContent += this.parent.getColumns()[colIdx].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport * as literals from '../base/string-literals';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(events.initialEnd, {});\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.ariaColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.ariaRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains(literals.row) && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute('aria-rowindex'), 10)] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.getCellFromIndex(selectedRow[rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].getElementsByClassName(literals.rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[index];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute(literals.ariaRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell'))) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || tr.classList.contains(literals.addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n setColumnIndex(this[key]);\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDetailRow || rows[i].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[i].data);\n }\n if (pKvalue === value) {\n return rows[i].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = 'true';\n }\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns, include);\n }\n var keys = Object.keys(columns[i]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[j]) < 0) {\n delete columns[i][keys[j]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].isDataRow && this.getRowElementByUID(rows[i].uid).style.display === 'none') {\n rows[i].visible = false;\n }\n else {\n rows[i].visible = true;\n }\n }\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return tbody;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.allowGrouping && this.aggregates.length) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('19.2.62')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\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","/**\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","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread({}, defaultOptions, {}, options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread({}, componentsInitialProps, {}, i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { isNullOrUndefined } 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 *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { 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 *\n * @returns {void}\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 *\n * @returns {void}\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 *\n * @function destroy\n * @returns {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: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': 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: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': 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: this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: 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: this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: 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: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': 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: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': 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 } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', 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 * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n 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 } 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 *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @hidden\n */\n function Pager(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.pageRefresh = 'pager-refresh';\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager',\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 * @returns {void}\n */\n Pager.prototype.render = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.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 *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, 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 *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if (newProp.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 *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.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 = this.isVue ? this.getPagerTemplate()(data, this) : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (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 *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n 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: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n __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","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n cssClass: 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.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 = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = 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 *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener } 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 *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n this.pagerObj = new Pager(pagerObj);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[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 *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[prop] = newProp[prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving) {\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 *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.addEventListener(events.created, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return this.parent.isReact && this.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 * @returns {void}\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(events.created, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n *\n * @returns {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 element.classList.remove('e-gridhover');\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.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('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = 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 *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[i].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible || (!cols[i].allowSorting && isSort) || (!cols[i].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[i].field);\n cDiv.setAttribute('data-e-mappinguid', cols[i].uid);\n var span = gObj.createElement('span', { innerHTML: cols[i].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[i].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[i].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n button.innerHTML = index > -1 ? this.parent.sortSettings.columns[index].direction : 'None';\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[i].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[i].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[i][name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var direction = txt === 'None' ? 'Ascending' : txt === 'Ascending' ? 'Descending' : 'None';\n target.innerHTML = direction;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i] !== target) {\n buttons[i].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[i]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter', className: 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n options[isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id, className: 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[i].field);\n var sortField = this.parent.sortSettings.columns[i].field;\n var sortDirection = this.parent.sortSettings.columns[i].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[i].field, this.sortPredicate[i].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[i].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === literals.leftRight && colFreezeMode === literals.frozenRight)) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName && columns[i].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({});\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[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 // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","/**\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Internationalization, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser, ChildProperty } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\nvar MaskPlaceholder = /** @class */ (function (_super) {\n __extends(MaskPlaceholder, _super);\n function MaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], MaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], MaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], MaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('hour')\n ], MaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], MaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], MaskPlaceholder.prototype, \"second\", void 0);\n __decorate([\n Property('day of the week')\n ], MaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n return MaskPlaceholder;\n}(ChildProperty));\nexport { MaskPlaceholder };\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'role': 'calendar'\n });\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '' } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = (isBlazor() ? 'days.' : 'days.stand-alone.') + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek);\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n if (!(isBlazor() && ref)) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n }\n else {\n this.element = document.getElementById(id);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n }\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement = this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.checkDeviceMode = function (ref) {\n if (Browser.isDevice && isBlazor() && ref) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref.invokeMethodAsync('OnDevice', true);\n }\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n if (isBlazor() && this.blazorRef) {\n e.preventDefault();\n if (!this.tableBodyElement) {\n this.element = closest(e.target, '.' + 'e-calendar');\n this.tableBodyElement = this.element.querySelector('tbody');\n }\n multiSelection = false;\n }\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n if (isBlazor() && this.blazorRef) {\n this.tableBodyElement.focus();\n var targetEle = e.target;\n var args = {\n Action: e.action, Key: e.key, Events: e,\n SelectDate: selectedDate ? selectedDate.id : null,\n FocusedDate: focusedDate ? focusedDate.id : null,\n classList: selectedDate ? selectedDate.classList.toString() : focusedDate ? focusedDate.classList.toString() : 'e-cell',\n Id: focusedDate ? focusedDate.id : selectedDate ? selectedDate.id : null,\n TargetClassList: targetEle.classList.toString()\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.blazorRef.invokeMethodAsync('OnCalendarKeyboardEvent', args);\n if (targetEle.classList.contains('e-today')) {\n targetEle.blur();\n this.tableBodyElement.focus();\n }\n if (this.serverModuleName === 'sf.calendars.Calendar') {\n this.tableBodyElement = null;\n }\n }\n else {\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'D' : 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'MMM' : null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: isBlazor() ? 'F' : 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n if (multiSelection && !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0])) {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.gregorian.days.format.') + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.islamic.days.format.') + this.dayHeaderFormat.toLowerCase();\n var mainVal = isBlazor() ? '' : 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'F' : 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.getFromatStringValue = function () {\n return isBlazor() ?\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (+this.value !== +this.previousDate || this.previousDate == null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * ServiceLocator\n *\n * @hidden\n\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n /* eslint-disable */\n /**\n * register method\n *\n * @param {string} name - specifies the name.\n * @param {T} type - specifies the type.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n };\n /**\n * getService method\n *\n * @param {string} name - specifies the name.\n * @returns {void}\n * @hidden\n\n */\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[name])) {\n // eslint-disable-next-line\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[name];\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n /**\n * addRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @param {IRenderer} type - specifies the renderer.\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n };\n /**\n * getRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n // eslint-disable-next-line\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { select, detach, extend } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getIndex, toObjectLowerCase } from '../base/util';\nimport { templateItems, tools } from '../models/items';\n/**\n * `Color Picker` module is used to handle ColorPicker actions.\n */\nvar ColorPickerInput = /** @class */ (function () {\n function ColorPickerInput(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n ColorPickerInput.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n /**\n * renderColorPickerInput method\n *\n * @param {IColorPickerRenderArgs} args - specify the arguments.\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.renderColorPickerInput = function (args) {\n var _this = this;\n this.initializeInstance();\n var suffixID = args.containerType;\n var tbElement = args.container;\n var targetID;\n var options;\n templateItems.forEach(function (item) {\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'fontcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_FontColor_Target';\n var fontNode = _this.parent.createElement('input');\n fontNode.id = targetID;\n fontNode.classList.add(classes.CLS_FONT_COLOR_TARGET);\n document.body.appendChild(fontNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_FontColor', tbElement),\n target: (targetID)\n };\n _this.fontColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'fontcolor');\n _this.fontColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'fontcolor', _this.fontColorPicker);\n break;\n }\n case 'backgroundcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_BackgroundColor_Target';\n var backNode = _this.parent.createElement('input');\n backNode.id = targetID;\n backNode.classList.add(classes.CLS_BACKGROUND_COLOR_TARGET);\n document.body.appendChild(backNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_BackgroundColor', tbElement),\n target: (targetID)\n };\n _this.backgroundColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'backgroundcolor');\n _this.backgroundColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'backgroundcolor', _this.backgroundColorPicker);\n break;\n }\n }\n }\n });\n };\n ColorPickerInput.prototype.destroy = function () {\n this.removeEventListener();\n this.destroyColorPicker();\n };\n /**\n * destroyColorPicker method\n *\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.destroyColorPicker = function () {\n if (this.fontColorPicker && !this.fontColorPicker.isDestroyed) {\n this.fontColorPicker.destroy();\n }\n if (this.backgroundColorPicker && !this.backgroundColorPicker.isDestroyed) {\n this.backgroundColorPicker.destroy();\n }\n if (this.fontColorDropDown && !this.fontColorDropDown.isDestroyed) {\n var innerEle = this.fontColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.fontColorDropDown.destroy();\n }\n if (this.backgroundColorDropDown && !this.backgroundColorDropDown.isDestroyed) {\n var innerEle = this.backgroundColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.backgroundColorDropDown.destroy();\n }\n };\n ColorPickerInput.prototype.setRtl = function (args) {\n if (this.fontColorPicker) {\n this.fontColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.fontColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.backgroundColorPicker) {\n this.backgroundColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.backgroundColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n ColorPickerInput.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRenderComplete, this.renderColorPickerInput, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.destroyColorPicker, this.destroyColorPicker, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n };\n ColorPickerInput.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontColor':\n if (this.fontColorPicker) {\n for (var _b = 0, _c = Object.keys(newProp.fontColor); _b < _c.length; _b++) {\n var font = _c[_b];\n switch (font) {\n case 'default': {\n this.fontColorPicker.setProperties({ value: newProp.fontColor.default });\n element = this.fontColorDropDown.element;\n var fontBorder = element.querySelector('.' + this.tools['fontcolor'].icon);\n fontBorder.style.borderBottomColor = newProp.fontColor.default;\n break;\n }\n case 'mode':\n this.fontColorPicker.setProperties({ mode: newProp.fontColor.mode });\n break;\n case 'columns':\n this.fontColorPicker.setProperties({ columns: newProp.fontColor.columns });\n break;\n case 'colorCode':\n this.fontColorPicker.setProperties({ presetColors: newProp.fontColor.colorCode });\n break;\n case 'modeSwitcher':\n this.fontColorPicker.setProperties({ modeSwitcher: newProp.fontColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n case 'backgroundColor':\n if (this.backgroundColorPicker) {\n for (var _d = 0, _e = Object.keys(newProp.backgroundColor); _d < _e.length; _d++) {\n var background = _e[_d];\n switch (background) {\n case 'default': {\n this.backgroundColorPicker.setProperties({ value: newProp.backgroundColor.default });\n element = this.backgroundColorDropDown.element;\n var backgroundBorder = element.querySelector('.' + this.tools['backgroundcolor'].icon);\n backgroundBorder.style.borderBottomColor = newProp.backgroundColor.default;\n break;\n }\n case 'mode':\n this.backgroundColorPicker.setProperties({ mode: newProp.backgroundColor.mode });\n break;\n case 'columns':\n this.backgroundColorPicker.setProperties({ columns: newProp.backgroundColor.columns });\n break;\n case 'colorCode':\n this.backgroundColorPicker.setProperties({ presetColors: newProp.backgroundColor.colorCode });\n break;\n case 'modeSwitcher':\n this.backgroundColorPicker.setProperties({ modeSwitcher: newProp.backgroundColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n }\n }\n };\n ColorPickerInput.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRenderComplete, this.renderColorPickerInput);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.destroyColorPicker, this.destroyColorPicker);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n };\n return ColorPickerInput;\n}());\nexport { ColorPickerInput };\n","import { RenderType } from '../base/enum';\nimport { CLS_HR_SEPARATOR } from '../base/classes';\nimport * as events from '../base/constant';\nimport { getTooltipText, toObjectLowerCase } from '../base/util';\nimport { tools, templateItems } from '../models/items';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar BaseToolbar = /** @class */ (function () {\n function BaseToolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n BaseToolbar.prototype.addEventListener = function () {\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n BaseToolbar.prototype.removeEventListener = function () {\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n BaseToolbar.prototype.setRtl = function (args) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n this.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n BaseToolbar.prototype.getClass = function (item) {\n var classes;\n switch (item) {\n case 'fontsize':\n classes = 'e-rte-inline-size-template';\n break;\n case 'fontcolor':\n case 'backgroundcolor':\n classes = 'e-rte-inline-color-template';\n break;\n default:\n classes = 'e-rte-inline-template';\n break;\n }\n return classes;\n };\n BaseToolbar.prototype.getTemplateObject = function (itemStr, container) {\n var tagName;\n switch (itemStr) {\n case 'fontcolor':\n case 'backgroundcolor':\n case 'numberformatlist':\n case 'bulletformatlist':\n tagName = 'span';\n break;\n default:\n tagName = 'button';\n break;\n }\n return {\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand,\n template: this.parent.createElement(tagName, {\n id: this.parent.getID() + '_' + container\n + '_' + this.tools[itemStr.toLocaleLowerCase()].id\n }).outerHTML,\n cssClass: this.parent.inlineMode.enable ? this.getClass(itemStr) : '',\n tooltipText: getTooltipText(itemStr, this.locator)\n };\n };\n /**\n * getObject method\n *\n * @param {string} item - specifies the string value\n * @param {string} container - specifies the value of string\n * @returns {IToolbarItemModel} - returns the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getObject = function (item, container) {\n var itemStr = item.toLowerCase();\n if (templateItems.indexOf(itemStr) !== -1) {\n return this.getTemplateObject(itemStr, container);\n }\n else {\n switch (itemStr) {\n case '|':\n return { type: 'Separator' };\n case '-':\n return { type: 'Separator', cssClass: CLS_HR_SEPARATOR };\n default:\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n tooltipText: getTooltipText(itemStr, this.locator),\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n }\n };\n /**\n * @param {string} tbItems - specifies the string value\n * @param {string} container - specifies the container value\n * @returns {ItemModel} - retunrs the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getItems = function (tbItems, container) {\n var _this = this;\n if (this.parent.toolbarSettings.items.length < 1) {\n return [];\n }\n var items = [];\n var _loop_1 = function (item) {\n switch (typeof item) {\n case 'string':\n items.push(this_1.getObject(item, container));\n break;\n default:\n if (!isNullOrUndefined(item.click)) {\n var proxy_1 = item;\n var callback_1 = proxy_1.click;\n proxy_1.click = function () {\n if (proxy_1.undo && _this.parent.formatter.getUndoRedoStack().length === 0) {\n _this.parent.formatter.saveData();\n }\n callback_1.call(_this);\n if ((_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text.trim()\n === _this.parent.inputElement.innerHTML.trim())) {\n return;\n }\n if (proxy_1.undo) {\n _this.parent.formatter.saveData();\n }\n };\n }\n items.push(item);\n }\n };\n var this_1 = this;\n for (var _i = 0, tbItems_1 = tbItems; _i < tbItems_1.length; _i++) {\n var item = tbItems_1[_i];\n _loop_1(item);\n }\n return items;\n };\n BaseToolbar.prototype.getToolbarOptions = function (args) {\n return {\n target: args.target,\n rteToolbarObj: this,\n items: this.getItems(args.items, args.container),\n overflowMode: args.mode,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl\n };\n };\n /**\n * render method\n *\n * @param {IToolbarRenderOptions} args - specifies the toolbar options\n * @returns {void}\n * @hidden\n\n */\n BaseToolbar.prototype.render = function (args) {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.toolbarRenderer.renderToolbar(this.getToolbarOptions(args));\n };\n return BaseToolbar;\n}());\nexport { BaseToolbar };\n","import { addClass, isNullOrUndefined, removeClass, select, closest } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport { getIndex } from '../base/util';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';\nimport * as model from '../models/items';\nimport { dispatchEvent } from '../base/util';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar DropDownButtons = /** @class */ (function () {\n function DropDownButtons(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n DropDownButtons.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n DropDownButtons.prototype.beforeRender = function (args) {\n var item = args.item;\n if (item.cssClass) {\n addClass([args.element], item.cssClass);\n }\n if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'\n || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {\n args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));\n }\n };\n DropDownButtons.prototype.dropdownContent = function (width, type, content) {\n return ('' +\n '' + content + '');\n };\n /**\n * renderDropDowns method\n *\n * @param {IDropDownRenderArgs} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.renderDropDowns = function (args) {\n var _this = this;\n this.initializeInstance();\n var type = args.containerType;\n var tbElement = args.container;\n model.templateItems.forEach(function (item) {\n var targetElement = undefined;\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'numberformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_NumberFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatOLItem = _this.parent.numberFormatList.types.slice();\n formatOLItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'NumberFormatList', enumerable: true }\n });\n });\n _this.numberFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-order-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'NumberFormatList', items: formatOLItem, element: targetElement\n });\n break;\n }\n case 'bulletformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_BulletFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatULItem = _this.parent.bulletFormatList.types.slice();\n formatULItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'BulletFormatList', enumerable: true }\n });\n });\n _this.bulletFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-unorder-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'BulletFormatList', items: formatULItem, element: targetElement\n });\n break;\n }\n case 'formats': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Formats', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatItem = _this.parent.format.types.slice();\n formatItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Formats', enumerable: true }, subCommand: { value: item.value, enumerable: true }\n });\n });\n var formatContent = isNullOrUndefined(_this.parent.format.default) ? formatItem[0].text :\n _this.parent.format.default;\n _this.formatDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-formats e-icons' : ''),\n content: _this.dropdownContent(_this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItem, formatContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FORMATS_TB_BTN,\n itemName: 'Formats', items: formatItem, element: targetElement\n });\n break;\n }\n case 'fontname': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontName', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontItem = _this.parent.fontFamily.items.slice();\n fontItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }\n });\n });\n var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :\n _this.parent.fontFamily.default;\n _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),\n content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItem, fontNameContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_NAME_TB_BTN,\n itemName: 'FontName', items: fontItem, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontFamily.default)) {\n _this.getEditNode().style.fontFamily = _this.parent.fontFamily.default;\n }\n break;\n }\n case 'fontsize': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontSize', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontsize = _this.parent.fontSize.items.slice();\n fontsize.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }\n });\n });\n var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[1].text :\n _this.parent.fontSize.default;\n _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({\n content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_SIZE_TB_BTN,\n itemName: 'FontSize', items: fontsize, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontSize.default)) {\n _this.getEditNode().style.fontSize = _this.parent.fontSize.default;\n }\n break;\n }\n case 'alignments':\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Alignments', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n _this.alignDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS,\n itemName: 'Alignments', items: model.alignmentItems, element: targetElement\n });\n break;\n case 'align':\n _this.imageAlignmentDropDown(type, tbElement, targetElement);\n break;\n case 'display':\n _this.imageDisplayDropDown(type, tbElement, targetElement);\n break;\n case 'tablerows':\n _this.rowDropDown(type, tbElement, targetElement);\n break;\n case 'tablecolumns':\n _this.columnDropDown(type, tbElement, targetElement);\n break;\n case 'tablecell':\n _this.cellDropDown(type, tbElement, targetElement);\n break;\n case 'tablecellverticalalign':\n _this.verticalAlignDropDown(type, tbElement, targetElement);\n break;\n case 'styles':\n _this.tableStylesDropDown(type, tbElement, targetElement);\n break;\n }\n }\n });\n };\n DropDownButtons.prototype.getUpdateItems = function (items, value) {\n var dropDownItems = items.slice();\n dropDownItems.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: (value === 'Format' ? 'Formats' : 'Font'), enumerable: true },\n subCommand: { value: (value === 'Format' ? item.value : value), enumerable: true }\n });\n });\n return dropDownItems;\n };\n DropDownButtons.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var type;\n var content;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontFamily':\n if (this.fontNameDropDown) {\n for (var _b = 0, _c = Object.keys(newProp.fontFamily); _b < _c.length; _b++) {\n var fontFamily = _c[_b];\n switch (fontFamily) {\n case 'default':\n case 'width': {\n var fontItems = this.fontNameDropDown.items;\n type = !isNullOrUndefined(closest(this.fontNameDropDown.element, '.' + classes.CLS_QUICK_TB)) ?\n 'quick' : 'toolbar';\n var fontNameContent = isNullOrUndefined(this.parent.fontFamily.default) ? fontItems[0].text :\n this.parent.fontFamily.default;\n content = this.dropdownContent(this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItems, fontNameContent, 'text', 'text')));\n this.fontNameDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n this.getEditNode().style.fontFamily = this.parent.fontFamily.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-family');\n }\n break;\n }\n case 'items':\n this.fontNameDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontFamily.items, 'FontName')\n });\n break;\n }\n }\n }\n break;\n case 'fontSize':\n if (this.fontSizeDropDown) {\n for (var _d = 0, _e = Object.keys(newProp.fontSize); _d < _e.length; _d++) {\n var fontSize = _e[_d];\n switch (fontSize) {\n case 'default':\n case 'width': {\n var fontsize = this.fontSizeDropDown.items;\n type = !isNullOrUndefined(closest(this.fontSizeDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var fontSizeContent = isNullOrUndefined(this.parent.fontSize.default) ? fontsize[1].text :\n this.parent.fontSize.default;\n content = this.dropdownContent(this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text')));\n this.fontSizeDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n this.getEditNode().style.fontSize = this.parent.fontSize.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-size');\n }\n break;\n }\n case 'items':\n this.fontSizeDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontSize.items, 'FontSize')\n });\n break;\n }\n }\n }\n break;\n case 'format':\n if (this.formatDropDown) {\n for (var _f = 0, _g = Object.keys(newProp.format); _f < _g.length; _f++) {\n var format = _g[_f];\n switch (format) {\n case 'default':\n case 'width': {\n var formatItems = this.formatDropDown.items;\n type = !isNullOrUndefined(closest(this.formatDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var formatContent = isNullOrUndefined(this.parent.format.default) ? formatItems[0].text :\n this.parent.format.default;\n content = this.dropdownContent(this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItems, formatContent, 'text', 'text')));\n this.formatDropDown.setProperties({ content: content });\n break;\n }\n case 'types':\n this.formatDropDown.setProperties({\n items: this.getUpdateItems(newProp.format.types, 'Format')\n });\n break;\n }\n }\n }\n break;\n }\n }\n };\n DropDownButtons.prototype.getEditNode = function () {\n return this.parent.contentModule.getEditPanel();\n };\n DropDownButtons.prototype.rowDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableRows', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-rows e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableRows',\n items: model.tableRowsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.columnDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableColumns', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableColumnsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-columns e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableColumns',\n items: model.tableColumnsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.cellDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCell', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCell',\n items: model.tableCellItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.verticalAlignDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCellVerticalAlign', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellVerticalAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell-ver-align e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCellVerticalAlign',\n items: model.TableCellVerticalAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.imageDisplayDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Display', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.displayDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-display e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Display',\n items: model.imageDisplayItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.imageAlignmentDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Align', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Align',\n items: model.imageAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.tableStylesDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Styles', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-style e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Styles',\n items: this.parent.tableSettings.styles,\n element: targetElement\n });\n };\n DropDownButtons.prototype.removeDropDownClasses = function (target) {\n removeClass([target], [\n classes.CLS_DROPDOWN_BTN,\n classes.CLS_DROPDOWN_POPUP,\n classes.CLS_DROPDOWN_ICONS,\n classes.CLS_DROPDOWN_ITEMS\n ]);\n };\n /**\n * destroyDropDowns method\n *\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.destroyDropDowns = function () {\n if (this.formatDropDown) {\n this.removeDropDownClasses(this.formatDropDown.element);\n this.formatDropDown.destroy();\n }\n if (this.fontNameDropDown) {\n this.removeDropDownClasses(this.fontNameDropDown.element);\n this.fontNameDropDown.destroy();\n }\n if (this.fontSizeDropDown) {\n this.removeDropDownClasses(this.fontSizeDropDown.element);\n this.fontSizeDropDown.destroy();\n }\n if (this.alignDropDown) {\n this.removeDropDownClasses(this.alignDropDown.element);\n this.alignDropDown.destroy();\n }\n if (this.imageAlignDropDown) {\n this.removeDropDownClasses(this.imageAlignDropDown.element);\n this.imageAlignDropDown.destroy();\n }\n if (this.displayDropDown) {\n this.removeDropDownClasses(this.displayDropDown.element);\n this.displayDropDown.destroy();\n }\n if (this.tableRowsDropDown) {\n this.removeDropDownClasses(this.tableRowsDropDown.element);\n this.tableRowsDropDown.destroy();\n }\n if (this.tableColumnsDropDown) {\n this.removeDropDownClasses(this.tableColumnsDropDown.element);\n this.tableColumnsDropDown.destroy();\n }\n if (this.tableCellVerticalAlignDropDown) {\n this.removeDropDownClasses(this.tableCellVerticalAlignDropDown.element);\n this.tableCellVerticalAlignDropDown.destroy();\n }\n if (this.numberFormatListDropDown) {\n this.removeDropDownClasses(this.numberFormatListDropDown.element);\n this.numberFormatListDropDown.destroy();\n }\n if (this.bulletFormatListDropDown) {\n this.removeDropDownClasses(this.bulletFormatListDropDown.element);\n this.bulletFormatListDropDown.destroy();\n }\n };\n DropDownButtons.prototype.setRtl = function (args) {\n if (this.formatDropDown) {\n this.formatDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontNameDropDown) {\n this.fontNameDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontSizeDropDown) {\n this.fontSizeDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.alignDropDown) {\n this.alignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageAlignDropDown) {\n this.imageAlignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.displayDropDown) {\n this.displayDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.numberFormatListDropDown) {\n this.numberFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.bulletFormatListDropDown) {\n this.bulletFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n DropDownButtons.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.beforeDropDownItemRender, this.beforeRender, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n };\n DropDownButtons.prototype.onIframeMouseDown = function () {\n dispatchEvent(document, 'mousedown');\n };\n DropDownButtons.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.beforeDropDownItemRender, this.beforeRender);\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n };\n return DropDownButtons;\n}());\nexport { DropDownButtons };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n return niceInterval;\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - axis.actualRange.interval;\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /*! Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type === 'Column' || series.type === 'Bar' || series.drawType === 'Column') ? 1 : 0;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(size);\n axis.calculateAxisRange(size, this.chart);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming && axis.valueType !== 'Category') ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n return isCustom ? format.replace('{value}', axis.format(tempInterval))\n : axis.format(tempInterval);\n };\n return Double;\n}());\nexport { Double };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-router-dom\"), require(\"prop-types\"), require(\"history\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-router-dom\", \"prop-types\", \"history\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactRouterLastLocation\"] = factory(require(\"react\"), require(\"react-router-dom\"), require(\"prop-types\"), require(\"history\"));\n\telse\n\t\troot[\"ReactRouterLastLocation\"] = factory(root[\"react\"], root[\"react-router-dom\"], root[\"prop-types\"], root[\"history\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__10__) {\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 = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 __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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __webpack_require__(0);\nvar PropTypes = __webpack_require__(6);\nvar react_router_dom_1 = __webpack_require__(1);\nvar LastLocationContext_1 = __webpack_require__(3);\nvar prevent_1 = __webpack_require__(7);\nvar lastLocation = null;\nvar updateLastLocation = function (_a) {\n var location = _a.location, nextLocation = _a.nextLocation, watchOnlyPathname = _a.watchOnlyPathname;\n if (location === null) {\n return;\n }\n if (nextLocation === location) {\n return;\n }\n if (watchOnlyPathname && location.pathname === nextLocation.pathname) {\n return;\n }\n if (prevent_1.shouldPrevent(nextLocation) && !prevent_1.hasBeenPrevented(nextLocation)) {\n prevent_1.prevent(nextLocation);\n return;\n }\n lastLocation = __assign({}, location);\n};\nvar LastLocationProvider = /** @class */ (function (_super) {\n __extends(LastLocationProvider, _super);\n function LastLocationProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n currentLocation: null,\n };\n return _this;\n }\n LastLocationProvider.getDerivedStateFromProps = function (props, state) {\n updateLastLocation({\n location: state.currentLocation,\n nextLocation: props.location,\n watchOnlyPathname: props.watchOnlyPathname,\n });\n return {\n currentLocation: props.location,\n };\n };\n LastLocationProvider.prototype.render = function () {\n var children = this.props.children;\n return (React.createElement(LastLocationContext_1.default.Provider, { value: lastLocation }, children));\n };\n LastLocationProvider.propTypes = {\n watchOnlyPathname: PropTypes.bool,\n children: PropTypes.node.isRequired,\n };\n LastLocationProvider.defaultProps = {\n watchOnlyPathname: false,\n };\n return LastLocationProvider;\n}(React.Component));\nexports.getLastLocation = function () { return lastLocation; };\nexports.setLastLocation = function (nextLastLocation) {\n lastLocation = nextLastLocation;\n};\nexports.default = react_router_dom_1.withRouter(LastLocationProvider);\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __webpack_require__(0);\nvar LastLocationContext = react_1.createContext(null);\nexports.default = LastLocationContext;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar withLastLocation_1 = __webpack_require__(5);\nexports.withLastLocation = withLastLocation_1.default;\nvar LastLocationProvider_1 = __webpack_require__(2);\nexports.LastLocationProvider = LastLocationProvider_1.default;\nvar useLastLocation_1 = __webpack_require__(8);\nexports.useLastLocation = useLastLocation_1.default;\nvar RedirectWithoutLastLocation_1 = __webpack_require__(9);\nexports.RedirectWithoutLastLocation = RedirectWithoutLastLocation_1.default;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __webpack_require__(0);\nvar react_router_dom_1 = __webpack_require__(1);\nvar LastLocationProvider_1 = __webpack_require__(2);\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\nvar withLastLocation = function (WrappedComponent) {\n var WithLastLocation = function (props) { return (React.createElement(WrappedComponent, __assign({ lastLocation: LastLocationProvider_1.getLastLocation() }, props))); };\n WithLastLocation.displayName = \"WithLastLocation(\" + getDisplayName(WrappedComponent) + \")\";\n return react_router_dom_1.withRouter(WithLastLocation);\n};\nexports.default = withLastLocation;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * I could only check `key` here but according to:\n * @see https://reacttraining.com/react-router/web/api/location\n * `key` property is not available when HashHistory is used.\n */\nvar props = ['key', 'pathname', 'search', 'hash'];\nvar isEqual = function (a, b) { return props.every(function (prop) { return a[prop] === b[prop]; }); };\nvar prevented = [];\nexports.prevent = function (location) {\n var state = location.state, rest = __rest(location, [\"state\"]);\n prevented.push(rest);\n};\nexports.hasBeenPrevented = function (location) {\n return prevented.some(function (preventedLocation) { return isEqual(location, preventedLocation); });\n};\nexports.shouldPrevent = function (location) {\n return Boolean(location.state && location.state.preventLastLocation);\n};\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __webpack_require__(0);\nvar LastLocationContext_1 = __webpack_require__(3);\nfunction useLastLocation() {\n return react_1.useContext(LastLocationContext_1.default);\n}\nexports.default = useLastLocation;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __webpack_require__(0);\nvar react_router_dom_1 = __webpack_require__(1);\nvar history_1 = __webpack_require__(10);\nvar RedirectWithoutLastLocation = function (_a) {\n var to = _a.to, rest = __rest(_a, [\"to\"]);\n var finalTo;\n if (typeof to === 'string') {\n finalTo = history_1.createLocation(to, { preventLastLocation: true });\n }\n else {\n finalTo = __assign({}, to, { state: __assign({ preventLastLocation: true }, to.state) });\n }\n return React.createElement(react_router_dom_1.Redirect, __assign({}, rest, { to: finalTo }));\n};\nexports.default = RedirectWithoutLastLocation;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__10__;\n\n/***/ })\n/******/ ]);\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 * 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 { 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n _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 *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n 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) { detach(el); });\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 clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n 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 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 tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n 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 return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\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 ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n 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 if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n 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 multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[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 poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[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 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 var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n 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 var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n 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 innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n 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 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 var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n 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 *\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 *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[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 if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var 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 if (this.isReact) {\n this.clearTemplate();\n }\n var btnItem = innerItems[index].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[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 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 dom;\n var 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 *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.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 *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array) && !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 (typeof newProperty !== 'function') {\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 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 }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\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 *\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","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","import { Draggable, Droppable } 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, getComplexFieldID, isComplexField } 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';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\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 *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\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, literals.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, literals.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();\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 var grouped = [].slice.call(_this.element.getElementsByClassName('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.getElementsByClassName('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 () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering && e.column.allowGrouping) {\n this.animateDropper(e);\n }\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 if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\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 * @returns {void}\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(events.destroy, this.destroy, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\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(events.destroy, this.destroy);\n this.parent.off('group-expand-collapse', this.updateExpand);\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 (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 // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector(literals.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(literals.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 // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n // eslint-disable-next-line no-case-declarations\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 // eslint-disable-next-line no-case-declarations\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 if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\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).getElementsByClassName('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 *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {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 rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var isHide = void 0;\n var dataManager = void 0;\n var query = void 0;\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var uid = trgt.parentElement.getAttribute('data-uid');\n var captionRow = gObj.getRowObjectFromUID(uid);\n var expand = false;\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 captionRow.isExpand = 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 captionRow.isExpand = false;\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 var rowObjs = gObj.getRowsObject();\n var startIdx = rowObjs.indexOf(captionRow);\n var rowsState = {};\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[i].indent === indent) {\n break;\n }\n if (rowObjs[i].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n rowNodes[i].style.display = visible ? '' : 'none';\n }\n else if (rowsState[rowObjs[i].parentUid] === false) {\n rowObjs[i].visible = false;\n rowNodes[i].style.display = 'none';\n }\n else {\n if (!(rowObjs[i].isDataRow || rowObjs[i].isCaptionRow || rowObjs[i].isDetailRow)) {\n var visible = rowObjs[i].cells.some(function (cell) { return cell.isDataCell\n && cell.visible; });\n if (visible === rowObjs[i].visible) {\n continue;\n }\n }\n rowObjs[i].visible = true;\n rowNodes[i].style.display = '';\n rowNodes[i].classList.remove('e-hide');\n }\n if (rowObjs[i].isCaptionRow) {\n rowsState[rowObjs[i].uid] = rowObjs[i].isExpand && rowObjs[i].visible;\n }\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n this.parent.notify(events.captionActionComplete, { isCollapse: isHide, parentUid: uid });\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 if (gObj.contentModule) {\n args.virtualInfo = gObj.contentModule.prevInfo;\n }\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 (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.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.parent.updateVisibleExpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 *\n * @param {string} columnName - Defines the column name to group.\n * @returns {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 *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {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 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 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 *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\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 *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\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 }\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 if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\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: 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 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 var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getComplexFieldID(field) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']');\n if (this.groupSettings.allowReordering && groupElem) {\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.getElementsByClassName('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].getElementsByClassName('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 // eslint-disable-next-line no-case-declarations\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 this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n }\n else {\n this.element.style.display = 'none';\n }\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.getElementsByClassName(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 *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.parent.isDestroyed || !this.parent.allowGrouping) && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n if (this.element.parentNode) {\n remove(this.element);\n }\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {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 *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\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).getElementsByClassName('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 || this.parent.isVue) {\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n return _this;\n }\n CheckBox.prototype.changeState = function (state) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n }\n this.getWrapper().setAttribute('aria-checked', ariaState);\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check');\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER, attrs: { 'role': 'checkbox', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\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","/**\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","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } 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 { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\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 *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\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 *\n * @returns {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 // eslint-disable-next-line no-self-assign\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 *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\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 *\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 * @returns {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 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 * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\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 *\n * @returns {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 };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n 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 var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\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, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\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 *\n * @returns {string} returns 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 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 * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\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 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.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\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(literals.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).toLowerCase());\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 *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousElementValue = '';\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.isBlazorServer = false;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n this.renderComplete();\n if (!this.isBlazorServer) {\n this.setTimeZone(this.serverTimezoneOffset);\n }\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n if (!this.isBlazorServer) {\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n this.checkInvalidValue(this.value);\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n else {\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + DATEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n this.setAllowEdit();\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n if (this.value && !this.isCalendar() && !isDynamic) {\n if (!this.isBlazorServer) {\n this.disabledDates();\n }\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler), this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler));\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n if (!this.isBlazorServer) {\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify(\"clearHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n }\n if (this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isCalendar() && !this.isBlazorServer) {\n this.hide(e);\n }\n else {\n if (!this.isBlazorServer || (this.isBlazorServer && this.inputWrapper.container.nextElementSibling)) {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[key];\n }\n }\n else {\n setStyle = this.htmlAttributes[key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify(\"inputHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value == this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(e.target) ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value) && !this.isBlazorServer)) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (this.getModuleName() === 'datepicker') {\n if (!this.isBlazorServer) {\n this.show(null, e);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n }\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start == 0 && end == length_1) || (end !== length_1 && e.action == 'tab') || (start !== 0 && e.action == 'shiftTab')) {\n e.preventDefault();\n }\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n }\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (!this.isBlazorServer && this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value) && !this.isBlazorServer) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === '') {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.calendarElement = this.popupWrapper.firstElementChild;\n this.tableBodyElement = select('tbody', this.calendarElement);\n this.contentElement = select('.e-content', this.calendarElement);\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.isBlazorServer ? null : this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value && !_this.isBlazorServer) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!this.isBlazorServer) {\n this.popupObj.element.className += ' ' + this.cssClass;\n }\n this.setAriaAttributes();\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.selectCalendar(event);\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +this.min && +this.value <= +this.max)) {\n outOfRange = new Date(this.checkValue(this.value));\n if (!this.isBlazorServer) {\n this.setProperties({ 'value': null }, true);\n }\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n }\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = 'auto';\n _this.popupWrapper.style.height = 'auto';\n }\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n if (!_this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n }\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n if (!this.isBlazorServer) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n this.isAltKeyPressed = false;\n this.popupWrapper = this.popupObj = null;\n }\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (!this.isBlazorServer) {\n _super.prototype.destroy.call(this);\n this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n }\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n if (!this.isBlazorServer) {\n this.keyboardModule.destroy();\n }\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n detach(this.inputWrapper.container);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'datepicker') ? true : false;\n if (!this.isBlazorServer) {\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n }\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.isBlazorServer) {\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n }\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = isBlazor() ? this.format.replace(/tt/, 'a') : this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'name':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic) &&\n !this.isBlazorServer) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text' && !this.isBlazorServer) {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function () {\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isBlazorServer) {\n if (this.isCalendar()) {\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var id = (focusedEle || selectedEle) ? (focusedEle || selectedEle).getAttribute('id') : 'null';\n attributes(this.inputElement, { 'aria-activedescendant': '' + id });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n else {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !(+new Date(+this.value).setMilliseconds(0) >= +this.min\n && +new Date(+this.value).setMilliseconds(0) <= +this.max))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.checkInvalidValue(newProp.value);\n }\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (!this.isBlazorServer) {\n if (isNullOrUndefined(this.value)) {\n this.updateInputValue('');\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n if (!this.isBlazorServer) {\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n if (!this.isBlazorServer) {\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement && !this.isBlazorServer) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && !this.isBlazorServer && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n\"use strict\";\r\n\r\nimport { IAppInsightsCore } from \"../JavaScriptSDK.Interfaces/IAppInsightsCore\"\r\nimport { IConfiguration } from \"../JavaScriptSDK.Interfaces/IConfiguration\";\r\nimport { IDiagnosticLogger } from '../JavaScriptSDK.Interfaces/IDiagnosticLogger';\r\nimport { IPlugin, ITelemetryPlugin } from \"../JavaScriptSDK.Interfaces/ITelemetryPlugin\";\r\nimport { ITelemetryItem } from \"../JavaScriptSDK.Interfaces/ITelemetryItem\";\r\nimport { IProcessTelemetryContext } from \"../JavaScriptSDK.Interfaces/IProcessTelemetryContext\";\r\nimport { ITelemetryPluginChain } from \"../JavaScriptSDK.Interfaces/ITelemetryPluginChain\";\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\n\r\nlet _isFunction = CoreUtils.isFunction;\r\nlet getPlugin = \"getPlugin\";\r\n\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nexport abstract class BaseTelemetryPlugin implements ITelemetryPlugin {\r\n\r\n /**\r\n * Call back for telemetry processing before it it is sent\r\n * @param env - This is the current event being reported\r\n * @param itemCtx - This is the context for the current request, ITelemetryPlugin instances \r\n * can optionally use this to access the current core instance or define / pass additional information\r\n * to later plugins (vs appending items to the telemetry item)\r\n */\r\n public processNext: (env: ITelemetryItem, itemCtx: IProcessTelemetryContext) => void;\r\n\r\n /**\r\n * Set next extension for telemetry processing\r\n */\r\n public setNextPlugin: (next: ITelemetryPlugin|ITelemetryPluginChain) => void;\r\n\r\n /**\r\n * Returns the current diagnostic logger that can be used to log issues, if no logger is currently\r\n * assigned a new default one will be created and returned.\r\n */\r\n public diagLog: (itemCtx?:IProcessTelemetryContext) => IDiagnosticLogger;\r\n\r\n /**\r\n * Returns whether the plugin has been initialized\r\n */\r\n public isInitialized: () => boolean;\r\n\r\n public identifier: string;\r\n public version?: string;\r\n\r\n /**\r\n * Holds the core instance that was used during initialization\r\n */\r\n public core: IAppInsightsCore; \r\n\r\n priority: number;\r\n\r\n /**\r\n * Helper to return the current IProcessTelemetryContext, if the passed argument exists this just\r\n * returns that value (helps with minification for callers), otherwise it will return the configured\r\n * context or a temporary one.\r\n * @param currentCtx - [Optional] The current execution context\r\n */\r\n protected _getTelCtx: (currentCtx?:IProcessTelemetryContext) => IProcessTelemetryContext;\r\n\r\n /**\r\n * Internal helper to allow setting of the internal initialized setting for inherited instances and unit testing\r\n */\r\n protected setInitialized: (isInitialized: boolean) => void;\r\n\r\n /**\r\n * Internal helper to initialize the instance\r\n */\r\n private _baseTelInit: (config: IConfiguration, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain) => void;\r\n\r\n constructor() {\r\n let _self = this;\r\n let _isinitialized = false;\r\n let _rootCtx: IProcessTelemetryContext = null; // Used as the root context, holding the current config and initialized core\r\n let _nextPlugin:ITelemetryPlugin|ITelemetryPluginChain = null; // Used for backward compatibility where plugins don't call the main pipeline\r\n\r\n _self.core = null;\r\n\r\n _self.diagLog = (itemCtx:IProcessTelemetryContext): IDiagnosticLogger => {\r\n return _self._getTelCtx(itemCtx).diagLog();\r\n }\r\n\r\n _self.isInitialized = () => {\r\n return _isinitialized;\r\n }\r\n\r\n _self.setInitialized = (isInitialized: boolean):void => {\r\n _isinitialized = isInitialized;\r\n }\r\n\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n\r\n _self.setNextPlugin = (next: ITelemetryPlugin|ITelemetryPluginChain) => {\r\n _nextPlugin = next;\r\n };\r\n\r\n _self.processNext = (env: ITelemetryItem, itemCtx: IProcessTelemetryContext) => {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx.processNext(env);\r\n } else if (_nextPlugin && _isFunction(_nextPlugin.processTelemetry)) {\r\n // Looks like backward compatibility or out of band processing. And as it looks \r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin.processTelemetry(env, null);\r\n }\r\n };\r\n\r\n _self._getTelCtx = (currentCtx:IProcessTelemetryContext = null) => {\r\n let itemCtx:IProcessTelemetryContext = currentCtx;\r\n if (!itemCtx) {\r\n let rootCtx = _rootCtx || new ProcessTelemetryContext(null, {}, _self.core);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[getPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx.createNew(null, _nextPlugin[getPlugin]);\r\n } else {\r\n itemCtx = rootCtx.createNew(null, _nextPlugin as ITelemetryPlugin);\r\n }\r\n }\r\n \r\n return itemCtx;\r\n }\r\n\r\n _self._baseTelInit = (config: IConfiguration, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain) => { \r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n config.extensionConfig = config.extensionConfig || [];\r\n }\r\n \r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n \r\n let nextPlugin:IPlugin = _nextPlugin as IPlugin;\r\n if (_nextPlugin && _nextPlugin[getPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[getPlugin]();\r\n }\r\n\r\n // Support legacy plugins where core was defined as a property\r\n _self.core = core;\r\n _rootCtx = new ProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n _isinitialized = true;\r\n }\r\n }\r\n\r\n public initialize(config: IConfiguration, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain): void {\r\n this._baseTelInit(config, core, extensions, pluginChain);\r\n }\r\n\r\n public abstract processTelemetry(env: ITelemetryItem, itemCtx?: IProcessTelemetryContext): void;\r\n}\r\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 * 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 // 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 /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\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';\nimport { PdfStringLayouter } from './../../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../../document/pdf-document';\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 _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = 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.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 this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\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.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\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 (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !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 ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (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 var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0 && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell !== null && (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight) > this.currentBounds.height) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\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_1.isFinish = false;\n this.drawRow(row, result_1, 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.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = gridRow.cells.getCell(i).value;\n var width = gridRow.cells.getCell(i).width;\n if (grid.columns.getColumn(i).isCustomWidth && gridRow.cells.getCell(i).width > grid.columns.getColumn(i).width) {\n width = grid.columns.getColumn(i).width;\n }\n this.slr = layouter.layout(gridRow.cells.getCell(i).value, font, gridRow.cells.getCell(i).stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (height == 0) {\n isFit = false;\n break;\n }\n else if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\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 && typeof stringResult.remainder !== 'undefined') {\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 * 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 } 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 *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\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 * @returns {string} returns 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 *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {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 var gridObject = 'gridObject';\n args[gridObject] = parent;\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\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 var evtArgs = args;\n if (!isNullOrUndefined(evtArgs.image)) {\n pdfCell.value = new PdfBitmap(evtArgs.image.base64);\n }\n if (!isNullOrUndefined(evtArgs.hyperLink)) {\n pdfCell.value = _this.setHyperLink(evtArgs);\n }\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 (!isRoot && !cols[i].visible) {\n colIndex = colIndex - 1;\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 + index, 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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 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 var total = '$total';\n var current = '$current';\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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 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 leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-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 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 if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate)\n || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 var args = {\n row: row, type: isGroupedFooter ? 'GroupFooter' : 'Footer', style: gridRow.cells\n };\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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\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 *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\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 *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\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 = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args);\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 cell.value = this.setHyperLink(args);\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.setHyperLink = function (args) {\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 return textLink;\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 *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\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 *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\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 // eslint-disable-next-line @typescript-eslint/no-explicit-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 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})();\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 _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","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 } 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 *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\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 * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var 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) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) &&\n exportProperties.dataSource instanceof DataManager) {\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, 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, this.helper.getForeignKeyData());\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 // eslint-disable-next-line max-len\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n // eslint-disable-next-line max-len\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 ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = index + level;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel' };\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level) + 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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-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.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[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 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 ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n 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 col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-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 if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[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 ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, Event, EventHandler, L10n, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, select, selectAll } from '@syncfusion/ej2-base';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */ (function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nexport { FilesProp };\nvar ButtonsProps = /** @class */ (function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */ (function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @class */ (function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n if (!this.isServerBlazor) {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.isServerBlazor = (isBlazor() && this.isServerRendered) ? true : false;\n this.isBlazorTemplate = this.isServerBlazor && this.template !== '' && !isNullOrUndefined(this.template) ? true : false;\n this.isBlazorSaveUrl = (this.isServerRendered &&\n (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl))) ? true : false;\n if (this.isBlazorSaveUrl && this.sequentialUpload) {\n this.sequentialUpload = false;\n }\n if (!this.isBlazorSaveUrl) {\n this.formRendered();\n }\n if (!this.isServerBlazor) {\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n }\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n if (!this.isServerBlazor) {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n }\n else {\n this.dropAreaWrapper = closest(this.element, '.' + DROP_WRAPPER);\n this.uploadWrapper = closest(this.element, '.e-upload.e-control-wrapper');\n this.browseButton = this.dropAreaWrapper.querySelector('button.e-upload-browse-btn');\n this.setDropArea();\n this.renderPreLoadFiles();\n this.wireEvents();\n }\n if (this.isServerBlazor) {\n this.renderComplete();\n }\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.serverUlElement = function (element) {\n if (element) {\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n this.listParent = element;\n this.fileList = [].slice.call(this.listParent.querySelectorAll('li'));\n this.serverRemoveIconBindEvent();\n if (!this.isForm) {\n this.checkAutoUpload(this.filesData);\n }\n }\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.actionButtons);\n }\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.createFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.createFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else if (!this.isServerBlazor) {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n if (!this.isServerBlazor) {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n }\n };\n Uploader.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n };\n Uploader.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n ++this.count;\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (item.length !== 1) {\n return;\n }\n var pasteFile = [].slice.call(item)[0];\n if ((pasteFile.kind === 'file') && pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n if (this.isBlazorSaveUrl) {\n this.fileList = [].slice.call(this.uploadWrapper.querySelectorAll('li'));\n }\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.element.value = '';\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n if (!this.isBlazorSaveUrl) {\n detach(selectedElement);\n }\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (!this.isBlazorSaveUrl) {\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n }\n else {\n this.interopAdaptor.invokeMethodAsync('removeFileData', index);\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (isBlazor()) {\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n if (this.isServerBlazor) {\n var name_1 = this.element.getAttribute('name');\n if (!isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name_1, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name_1, selectedFiles.name);\n }\n }\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?\n liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (!this.isServerBlazor) {\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ?\n event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n /* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, \n // eslint-disable-next-line @typescript-eslint/indent\n targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n if (isBlazor()) {\n this.currentRequestHeader = eventArgs.currentRequest;\n this.customFormDatas = eventArgs.customFormData;\n }\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = dataFiles;\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.createFileList(fileData, true);\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.filesData = this.filesData.concat(fileData);\n }\n if (!this.isForm || this.allowUpload()) {\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.checkAutoUpload(fileData);\n }\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.isBlazorSaveUrl) {\n this.interopAdaptor.invokeMethodAsync('updateServerFileData', this.filesData, this.isForm);\n }\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n this.interopAdaptor.invokeMethodAsync('clearAll');\n }\n else {\n this.removeActionButtons();\n }\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n var removedList;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n removedList = this.listParent.querySelectorAll('li');\n for (var _i = 0, removedList_1 = removedList; _i < removedList_1.length; _i++) {\n var item = removedList_1[_i];\n detach(item);\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.createFileList([filesData[index]]);\n }\n }\n }\n else {\n this.createFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData, isSelectedFile) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n var fileListData = (isSelectedFile) ? this.filesData = this.filesData.concat(fileData) : fileData;\n this.interopAdaptor.invokeMethodAsync('createFileList', fileListData, this.isForm);\n }\n else {\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n if (this.isBlazorSaveUrl) {\n for (var i = 0; i < this.filesData.length; i++) {\n if (this.filesData[i].name === files.name) {\n this.filesData[i].status = status;\n this.filesData[i].statusCode = statusCode;\n }\n }\n }\n else {\n files.status = status;\n files.statusCode = statusCode;\n }\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if ((!isNullOrUndefined(this.filesData[i].id) && !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: []\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n liElement.classList.add(RESTRICT_RETRY);\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverRemoveIconBindEvent = function () {\n if (this.uploadWrapper && this.isBlazorSaveUrl) {\n var iconElement = [].slice.call(this.uploadWrapper.querySelectorAll('ul li'));\n for (var i = 0; i < iconElement.length; i++) {\n var removeIconEle = (iconElement[i]) ? iconElement[i].querySelector('.e-icons') : null;\n if (removeIconEle) {\n EventHandler.remove(removeIconEle, 'click', this.removeFiles);\n EventHandler.add(removeIconEle, 'click', this.removeFiles, this);\n }\n }\n }\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n if (!this.isBlazorSaveUrl) {\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n if (!_this.isBlazorSaveUrl) {\n _this.trigger('change', { file: _this.uploadedFilesData });\n }\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n }\n else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n }\n else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append('chunkFile', blob, file.name);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n /* istanbul ignore next */\n if (isBlazor()) {\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_3 = _this.element.getAttribute('name');\n formData.append(name_3, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n deleteIcon && deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon && deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon && deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n pauseIcon && pauseIcon.classList.add(RETRY_ICON);\n pauseIcon && pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon && pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)\n && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)\n && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string}\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_4 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_4 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.clearAll();\n }\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!this.isServerBlazor) {\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n _super.prototype.destroy.call(this);\n }\n else {\n this.uploadWrapper = null;\n }\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (isBlazor()) {\n _this.currentRequestHeader = eventArgs.currentRequest ? eventArgs.currentRequest : _this.currentRequestHeader;\n _this.customFormDatas = (eventArgs.customFormData && eventArgs.customFormData.length > 0) ?\n eventArgs.customFormData : _this.customFormDatas;\n }\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileInfo = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n var file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var _this = this;\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n if (this.isServerBlazor) {\n this.interopAdaptor.invokeMethodAsync('GetFileDetails', files);\n }\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n var _loop_5 = function (i) {\n if (this_3.isServerBlazor && !this_3.checkChunkUpload()) {\n /* istanbul ignore next */\n if (selectedFiles[i] && selectedFiles[i].rawFile instanceof File) {\n this_3.getBase64(selectedFiles[i].rawFile).then(function (data) {\n _this.base64String.push(data);\n _this.uploadFilesRequest(selectedFiles, i, custom);\n });\n }\n }\n else {\n this_3.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n var this_3 = this;\n for (var i = 0; i < selectedFiles.length; i++) {\n _loop_5(i);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var cloneFiles = [];\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var getFileData;\n /* istanbul ignore next */\n if (this.isServerBlazor) {\n getFileData = selectedFiles.slice(0);\n cloneFiles.push(getFileData[i].rawFile);\n }\n var eventArgs = {\n fileData: (this.isServerBlazor) ? getFileData[i] : selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n /* istanbul ignore next */\n if (isBlazor()) {\n eventArgs.fileData.rawFile = !chunkEnabled ? _this.base64String[i] : eventArgs.fileData.rawFile;\n if (_this.currentRequestHeader) {\n _this.updateCustomheader(ajax.httpRequest, _this.currentRequestHeader);\n }\n if (_this.customFormDatas) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n }\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (_this.isServerBlazor && !chunkEnabled) {\n selectedFiles[i].rawFile = eventArgs.fileData.rawFile = cloneFiles[i];\n }\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_5 = this.element.getAttribute('name');\n formData.append(name_5, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel && _this.isServerBlazor) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel && _this.isServerBlazor) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (isBlazor()) {\n _this.currentRequestHeader = beforeEventArgs.currentRequest;\n _this.customFormDatas = beforeEventArgs.customFormData;\n }\n if (_this.isFormUpload() && !_this.isBlazorSaveUrl) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')\n && !_this.isBlazorSaveUrl) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_6 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_6(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (!this.isServerBlazor) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n }\n else {\n for (var i = 0; i < this.filesData.length; i++) {\n this.filesData[i].rawFile = this.base64String[i];\n }\n return this.filesData;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\nexport { Uploader };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off', 'aria-live': 'assertive' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n if (!(isBlazor() && this.isServerRendered)) {\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null && !(isBlazor() && this.isServerRendered)) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (!(isBlazor() && this.isServerRendered)) {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n }\n else {\n this.container = this.element.parentElement;\n this.inputWrapper = { container: this.container };\n this.hiddenInput = this.container.querySelector('input[type=\"hidden\"]');\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n Input.bindInitialEvent({\n element: this.element, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties\n });\n }\n this.wireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n attributes(this.element, { 'aria-valuemin': this.min.toString(), 'aria-valuemax': this.max.toString() });\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide'))) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === \"touchmove\") {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin',\n 'aria-valuemax', 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n _super.prototype.destroy.call(this);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n if (isBlazor()) {\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n else {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n }\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (isBlazor()) {\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n }\n else {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, TransitionTimeouts, TransitionStatuses, tagPropType } from './utils';\n\nvar CarouselItem = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CarouselItem, _React$Component);\n\n function CarouselItem(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n startAnimation: false\n };\n _this.onEnter = _this.onEnter.bind(_assertThisInitialized(_this));\n _this.onEntering = _this.onEntering.bind(_assertThisInitialized(_this));\n _this.onExit = _this.onExit.bind(_assertThisInitialized(_this));\n _this.onExiting = _this.onExiting.bind(_assertThisInitialized(_this));\n _this.onExited = _this.onExited.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = CarouselItem.prototype;\n\n _proto.onEnter = function onEnter(node, isAppearing) {\n this.setState({\n startAnimation: false\n });\n this.props.onEnter(node, isAppearing);\n };\n\n _proto.onEntering = function onEntering(node, isAppearing) {\n // getting this variable triggers a reflow\n var offsetHeight = node.offsetHeight;\n this.setState({\n startAnimation: true\n });\n this.props.onEntering(node, isAppearing);\n return offsetHeight;\n };\n\n _proto.onExit = function onExit(node) {\n this.setState({\n startAnimation: false\n });\n this.props.onExit(node);\n };\n\n _proto.onExiting = function onExiting(node) {\n this.setState({\n startAnimation: true\n });\n node.dispatchEvent(new CustomEvent('slide.bs.carousel'));\n this.props.onExiting(node);\n };\n\n _proto.onExited = function onExited(node) {\n node.dispatchEvent(new CustomEvent('slid.bs.carousel'));\n this.props.onExited(node);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n isIn = _this$props.in,\n children = _this$props.children,\n cssModule = _this$props.cssModule,\n slide = _this$props.slide,\n Tag = _this$props.tag,\n className = _this$props.className,\n transitionProps = _objectWithoutPropertiesLoose(_this$props, [\"in\", \"children\", \"cssModule\", \"slide\", \"tag\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n enter: slide,\n exit: slide,\n in: isIn,\n onEnter: this.onEnter,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var direction = _this2.context.direction;\n var isActive = status === TransitionStatuses.ENTERED || status === TransitionStatuses.EXITING;\n var directionClassName = (status === TransitionStatuses.ENTERING || status === TransitionStatuses.EXITING) && _this2.state.startAnimation && (direction === 'right' ? 'carousel-item-left' : 'carousel-item-right');\n var orderClassName = status === TransitionStatuses.ENTERING && (direction === 'right' ? 'carousel-item-next' : 'carousel-item-prev');\n var itemClasses = mapToCssModules(classNames(className, 'carousel-item', isActive && 'active', directionClassName, orderClassName), cssModule);\n return /*#__PURE__*/React.createElement(Tag, {\n className: itemClasses\n }, children);\n });\n };\n\n return CarouselItem;\n}(React.Component);\n\nCarouselItem.propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n tag: tagPropType,\n in: PropTypes.bool,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n slide: PropTypes.bool,\n className: PropTypes.string\n});\nCarouselItem.defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n tag: 'div',\n timeout: TransitionTimeouts.Carousel,\n slide: true\n});\nCarouselItem.contextTypes = {\n direction: PropTypes.string\n};\nexport default CarouselItem;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, gridActionHandler, Global } from '../base/util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable;\n var contentTable;\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone;\n var contentTextClone;\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n var left = gObj.getFrozenColumns() || gObj.getFrozenLeftColumnsCount();\n var movable = gObj.getMovableColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n var col = gObj.getColumnByField(fName);\n if (col.getFreezeTableName() === literals.frozenLeft) {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'movable') {\n headerTable = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + literals.movableContent).children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[i].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[i] = footerTextClone[i].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[i] = contentTextClone[i].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wContent = this.createTable(contentTable, contentText, contentDivTag);\n var wFooter = null;\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[columnIndexByField];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[columnIndexByField]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[i].visible) {\n tWidth = tWidth + parseFloat(element[i].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.isFrozenGrid()) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid()) {\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[i];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[columnIndex];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table');\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[i]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[i].parentElement.offsetHeight > 0) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return this.parent.isFrozenGrid() ?\n [].slice.call(this.parent.getHeaderContent().getElementsByClassName(resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n var mtbody = this.parent.getMovableContentTbody();\n var ftbody = this.parent.getFrozenLeftContentTbody();\n var frtbody = this.parent.getFrozenRightContentTbody();\n var mtr = [].slice.call(mtbody.querySelectorAll('tr'));\n var ftr = [].slice.call(ftbody.querySelectorAll('tr'));\n var frTr = [];\n if (this.parent.getFrozenMode() === literals.leftRight && frtbody) {\n frTr = [].slice.call(frtbody.querySelectorAll('tr'));\n }\n var _loop_1 = function (i) {\n gridActionHandler(this_1.parent, function (tableName, row) {\n if (_this.parent.rowHeight) {\n row[i].style.height = _this.parent.rowHeight + 'px';\n }\n else {\n row[i].style.removeProperty('height');\n }\n }, [ftr, mtr, frTr]);\n };\n var this_1 = this;\n for (var i = 0; i < mtr.length; i++) {\n _loop_1(i);\n }\n }\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[i].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n mousemove = this.parent.enableRtl ? (pageX - this.pageX) : (this.pageX - pageX);\n }\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if ((this.parent.enableRtl && this.minMove >= pageX) || (!this.parent.enableRtl && this.minMove <= pageX)) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n }\n if ((this.column.getFreezeTableName() !== literals.frozenRight\n && ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)))\n || (this.column.getFreezeTableName() === literals.frozenRight && ((this.parent.enableRtl && this.minMove >= pageX)\n || (!this.parent.enableRtl && this.minMove <= pageX)))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[i].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content.querySelector('.' + literals.movableContent) ? content.querySelector('.' + literals.movableContent) : content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.isFrozenGrid()) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var isFrozen = this.parent.isFrozenGrid();\n var height = isFrozen ? this.parent.getContent().querySelector('.' + literals.content).offsetHeight\n : this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n var right = this.parent.getFrozenRightColumnsCount();\n if (isFrozen) {\n if (parentsUntil(rect, literals.movableHeader)) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelectorAll('tr'));\n }\n else if (right && parentsUntil(rect, 'e-frozen-right-header')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelectorAll('tr'));\n }\n else {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelectorAll('tr'));\n }\n }\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[i].offsetHeight;\n }\n var pos = this.calcPos(rect);\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n pos.left += (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1);\n }\n else {\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n }\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1));\n }\n else {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n }\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.isFrozenGrid()) {\n var table = closest(rect, '.' + literals.table);\n var fLeft = table.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.reactTextMask=t(require(\"react\")):e.reactTextMask=t(e.React)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t,r){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function a(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.conformToMask=void 0;var s=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:f,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.placeholderChar;if(!o(e))throw new Error(\"Text-mask:convertMaskToPlaceholder; The mask property must be an array.\");if(e.indexOf(t)!==-1)throw new Error(\"Placeholder character must not be used as part of the mask. Please specify a character that is not present in your mask as your placeholder character.\\n\\n\"+(\"The placeholder character that was received is: \"+JSON.stringify(t)+\"\\n\\n\")+(\"The mask that was received is: \"+JSON.stringify(e)));return e.map(function(e){return e instanceof RegExp?t:e}).join(\"\")}function o(e){return Array.isArray&&Array.isArray(e)||e instanceof Array}function i(e){return\"string\"==typeof e||e instanceof String}function a(e){return\"number\"==typeof e&&void 0===e.length&&!isNaN(e)}function u(e){return\"undefined\"==typeof e||null===e}function s(e){for(var t=[],r=void 0;r=e.indexOf(c),r!==-1;)t.push(r),e.splice(r,1);return{maskWithoutCaretTraps:e,indexes:t}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.convertMaskToPlaceholder=n,t.isArray=o,t.isString=i,t.isNumber=a,t.isNil=u,t.processCaretTraps=s;var l=r(1),f=[],c=\"[]\"},function(e,t,r){\"use strict\";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(0,i.isArray)(t)){if((\"undefined\"==typeof t?\"undefined\":o(t))!==a.strFunction)throw new Error(\"Text-mask:conformToMask; The mask property must be an array.\");t=t(e,r),t=(0,i.processCaretTraps)(t).maskWithoutCaretTraps}var n=r.guide,l=void 0===n||n,f=r.previousConformedValue,c=void 0===f?s:f,p=r.placeholderChar,d=void 0===p?a.placeholderChar:p,h=r.placeholder,v=void 0===h?(0,i.convertMaskToPlaceholder)(t,d):h,y=r.currentCaretPosition,m=r.keepCharPositions,b=l===!1&&void 0!==c,g=e.length,k=c.length,C=v.length,O=t.length,T=g-k,P=T>0,x=y+(P?-T:0),w=x+Math.abs(T);if(m===!0&&!P){for(var S=s,_=x;_=x&&t=0;j--){var E=M[j].char;if(E!==d){var R=j>=x&&k===O;E===v[R?j-T:j]&&M.splice(j,1)}}var V=s,N=!1;e:for(var A=0;A0)for(;M.length>0;){var I=M.shift(),F=I.char,q=I.isNew;if(F===d&&b!==!0){V+=d;continue e}if(t[A].test(F)){if(m===!0&&q!==!1&&c!==s&&l!==!1&&P){for(var D=M.length,L=null,W=0;W0,T=0===b,P=C>1&&!O&&!T;if(P)return s;var x=O&&(r===l||l===p),w=0,S=void 0,_=void 0;if(x)w=s-C;else{var M=l.toLowerCase(),j=f.toLowerCase(),E=j.substr(0,s).split(o),R=E.filter(function(e){return M.indexOf(e)!==-1});_=R[R.length-1];var V=a.substr(0,R.length).split(o).filter(function(e){return e!==c}).length,N=p.substr(0,R.length).split(o).filter(function(e){return e!==c}).length,A=N!==V,B=void 0!==a[R.length-1]&&void 0!==p[R.length-2]&&a[R.length-1]!==c&&a[R.length-1]!==p[R.length-1]&&a[R.length-1]===p[R.length-2];!O&&(A||B)&&V>0&&p.indexOf(_)>-1&&void 0!==f[s]&&(S=!0,_=f[s]);for(var I=h.map(function(e){return M[e]}),F=I.filter(function(e){return e===_}).length,q=R.filter(function(e){return e===_}).length,D=p.substr(0,p.indexOf(c)).split(o).filter(function(e,t){return e===_&&f[t]!==e}).length,L=D+q+F+(S?1:0),W=0,J=0;J=L)break}}if(O){for(var H=w,Y=w;Y<=g;Y++)if(p[Y]===c&&(H=Y),p[Y]===c||y.indexOf(Y)!==-1||Y===g)return H}else if(S){for(var z=w-1;z>=0;z--)if(l[z]===_||y.indexOf(z)!==-1||0===z)return z}else for(var G=w;G>=0;G--)if(p[G-1]===c||y.indexOf(G)!==-1||0===G)return G}Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=r;var n=[],o=\"\"},function(e,t,r){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t={previousConformedValue:void 0,previousPlaceholder:void 0};return{state:t,update:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,o=n.inputElement,l=n.mask,c=n.guide,y=n.pipe,b=n.placeholderChar,g=void 0===b?h.placeholderChar:b,k=n.keepCharPositions,C=void 0!==k&&k,O=n.showMask,T=void 0!==O&&O;if(\"undefined\"==typeof r&&(r=o.value),r!==t.previousConformedValue){(\"undefined\"==typeof l?\"undefined\":s(l))===m&&void 0!==l.pipe&&void 0!==l.mask&&(y=l.pipe,l=l.mask);var P=void 0,x=void 0;if(l instanceof Array&&(P=(0,d.convertMaskToPlaceholder)(l,g)),l!==!1){var w=a(r),S=o.selectionEnd,_=t.previousConformedValue,M=t.previousPlaceholder,j=void 0;if((\"undefined\"==typeof l?\"undefined\":s(l))===h.strFunction){if(x=l(w,{currentCaretPosition:S,previousConformedValue:_,placeholderChar:g}),x===!1)return;var E=(0,d.processCaretTraps)(x),R=E.maskWithoutCaretTraps,V=E.indexes;x=R,j=V,P=(0,d.convertMaskToPlaceholder)(x,g)}else x=l;var N={previousConformedValue:_,guide:c,placeholderChar:g,pipe:y,placeholder:P,currentCaretPosition:S,keepCharPositions:C},A=(0,p.default)(w,x,N),B=A.conformedValue,I=(\"undefined\"==typeof y?\"undefined\":s(y))===h.strFunction,F={};I&&(F=y(B,u({rawValue:w},N)),F===!1?F={value:_,rejected:!0}:(0,d.isString)(F)&&(F={value:F}));var q=I?F.value:B,D=(0,f.default)({previousConformedValue:_,previousPlaceholder:M,conformedValue:q,placeholder:P,rawValue:w,currentCaretPosition:S,placeholderChar:g,indexesOfPipedChars:F.indexesOfPipedChars,caretTrapIndexes:j}),L=q===P&&0===D,W=T?P:v,J=L?W:q;t.previousConformedValue=J,t.previousPlaceholder=P,o.value!==J&&(o.value=J,i(o,D))}}}}}function i(e,t){document.activeElement===e&&(b?g(function(){return e.setSelectionRange(t,t,y)},0):e.setSelectionRange(t,t,y))}function a(e){if((0,d.isString)(e))return e;if((0,d.isNumber)(e))return String(e);if(void 0===e||null===e)return v;throw new Error(\"The 'value' provided to Text Mask needs to be a string or a number. The value received was:\\n\\n \"+JSON.stringify(e))}Object.defineProperty(t,\"__esModule\",{value:!0});var u=Object.assign||function(e){for(var t=1;t responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n } else {\r\n const textData: string = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","'use strict';\n\nvar _TagManager = require('./TagManager');\n\nvar _TagManager2 = _interopRequireDefault(_TagManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _TagManager2.default;","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\nvar insertParams = function insertParams(path, params) {\n var segments = segmentize(path);\n return \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname, query) {\n return pathname + (query ? \"?\" + query : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", { baseuri: \"/\", basepath: \"/\" });\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n { value: { baseuri: uri, basepath: basepath } },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch };","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n *
    \n * {\"I'll receive my-node-* classes\"}\n *
    \n *
    \n * \n *
    \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
    I appear first
    \n *
    I replace the above
    \n *
    \n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar _Snippets = require('./Snippets');\n\nvar _Snippets2 = _interopRequireDefault(_Snippets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagManager = {\n dataScript: function dataScript(dataLayer) {\n var script = document.createElement('script');\n script.innerHTML = dataLayer;\n return script;\n },\n gtm: function gtm(args) {\n var snippets = _Snippets2.default.tags(args);\n\n var noScript = function noScript() {\n var noscript = document.createElement('noscript');\n noscript.innerHTML = snippets.iframe;\n return noscript;\n };\n\n var script = function script() {\n var script = document.createElement('script');\n script.innerHTML = snippets.script;\n return script;\n };\n\n var dataScript = this.dataScript(snippets.dataLayerVar);\n\n return {\n noScript: noScript,\n script: script,\n dataScript: dataScript\n };\n },\n initialize: function initialize(_ref) {\n var gtmId = _ref.gtmId,\n _ref$events = _ref.events,\n events = _ref$events === undefined ? {} : _ref$events,\n dataLayer = _ref.dataLayer,\n _ref$dataLayerName = _ref.dataLayerName,\n dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n _ref$auth = _ref.auth,\n auth = _ref$auth === undefined ? '' : _ref$auth,\n _ref$preview = _ref.preview,\n preview = _ref$preview === undefined ? '' : _ref$preview;\n\n var gtm = this.gtm({\n id: gtmId,\n events: events,\n dataLayer: dataLayer || undefined,\n dataLayerName: dataLayerName,\n auth: auth,\n preview: preview\n });\n if (dataLayer) document.head.appendChild(gtm.dataScript);\n document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n },\n dataLayer: function dataLayer(_ref2) {\n var _dataLayer = _ref2.dataLayer,\n _ref2$dataLayerName = _ref2.dataLayerName,\n dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n\n if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n var dataScript = this.dataScript(snippets);\n document.head.insertBefore(dataScript, document.head.childNodes[0]);\n }\n};\n\nmodule.exports = TagManager;","'use strict';\n\nvar _warn = require('./utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developers.google.com/tag-manager/quickstart\n\nvar Snippets = {\n tags: function tags(_ref) {\n var id = _ref.id,\n events = _ref.events,\n dataLayer = _ref.dataLayer,\n dataLayerName = _ref.dataLayerName,\n preview = _ref.preview,\n auth = _ref.auth;\n\n var gtm_auth = '>m_auth=' + auth;\n var gtm_preview = '>m_preview=' + preview;\n\n if (!id) (0, _warn2.default)('GTM Id is required');\n\n var iframe = '\\n ';\n\n var script = '\\n (function(w,d,s,l,i){w[l]=w[l]||[];\\n w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '>m_cookies_win=x\\';\\n f.parentNode.insertBefore(j,f);\\n })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n\n var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n\n return {\n iframe: iframe,\n script: script,\n dataLayerVar: dataLayerVar\n };\n },\n dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n return '\\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n }\n};\n\nmodule.exports = Snippets;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar warn = function warn(s) {\n console.warn('[react-gtm]', s);\n};\n\nexports.default = warn;","/* @flow */\n/*::\n\ntype DotenvParseOptions = {\n debug?: boolean\n}\n\n// keys and values from src\ntype DotenvParseOutput = { [string]: string }\n\ntype DotenvConfigOptions = {\n path?: string, // path to .env file\n encoding?: string, // encoding of .env file\n debug?: string // turn on logging for debugging purposes\n}\n\ntype DotenvConfigOutput = {\n parsed?: DotenvParseOutput,\n error?: Error\n}\n\n*/\n\nconst fs = require('fs')\nconst path = require('path')\n\nfunction log (message /*: string */) {\n console.log(`[dotenv][DEBUG] ${message}`)\n}\n\nconst NEWLINE = '\\n'\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\n// Parses src into an Object\nfunction parse (src /*: string | Buffer */, options /*: ?DotenvParseOptions */) /*: DotenvParseOutput */ {\n const debug = Boolean(options && options.debug)\n const obj = {}\n\n // convert Buffers before splitting into lines and processing\n src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = (keyValueArr[2] || '')\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n\n obj[key] = val\n } else if (debug) {\n log(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n }\n })\n\n return obj\n}\n\n// Populates process.env from .env file\nfunction config (options /*: ?DotenvConfigOptions */) /*: DotenvConfigOutput */ {\n let dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding /*: string */ = 'utf8'\n let debug = false\n\n if (options) {\n if (options.path != null) {\n dotenvPath = options.path\n }\n if (options.encoding != null) {\n encoding = options.encoding\n }\n if (options.debug != null) {\n debug = true\n }\n }\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n\n Object.keys(parsed).forEach(function (key) {\n if (!Object.prototype.hasOwnProperty.call(process.env, key)) {\n process.env[key] = parsed[key]\n } else if (debug) {\n log(`\"${key}\" is already defined in \\`process.env\\` and will not be overwritten`)\n }\n })\n\n return { parsed }\n } catch (e) {\n return { error: e }\n }\n}\n\nmodule.exports.config = config\nmodule.exports.parse = parse\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\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, EventHandler, L10n, setValue, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n if (!(isBlazor() && this.isServerRendered)) {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n }\n else {\n this.respectiveElement = this.element;\n this.textboxWrapper = { container: this.element.parentElement };\n if (this.showClearButton && !this.multiline) {\n this.textboxWrapper.clearButton = this.textboxWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.respectiveElement, this.textboxWrapper.clearButton, this.textboxWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.respectiveElement);\n }\n // eslint-disable-next-line max-len, @typescript-eslint/no-explicit-any\n Input.bindInitialEvent({ element: this.respectiveElement, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties });\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.respectiveElement.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n this.raiseChangeEvent(args, true);\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR))) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-placeholder', 'aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n _super.prototype.destroy.call(this);\n }\n else {\n this.textboxWrapper = null;\n }\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, isUndefined, Browser, compile, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar treeAriaAttr = {\n treeRole: 'tree',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
    \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n }\n else {\n this.element.classList.remove(DISABLED);\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n addClass([firstNode], FOCUS);\n this.updateIdAttr(null, firstNode);\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if (!this.isLoaded || this.isFieldChange) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, obj[i]);\n if (dataId && dataId.toString() === parentId) {\n return getValue(this.fields.child, obj[i]);\n }\n else if (!isNOU(getValue(this.fields.child, obj[i]))) {\n childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n }\n addClass([li], FOCUS);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true ||\n getValue(this.fields.child.toString(), child[length_1])) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = this.getChildNodes(this.treeData, id.toString());\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], [HOVER, FOCUS]);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n addClass([this.getFocusedNode()], HOVER);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function () {\n removeClass([this.getFocusedNode()], HOVER);\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n if (this.showCheckBox) {\n checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n _this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: _this.enableRtl,\n }\n }, _this.createElement);\n _this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n _this.wireInputEvents(inpEle);\n }\n });\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent();\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n txtEle.innerText = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n txtEle.focus();\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[i] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent();\n }\n this.triggerEvent();\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = dropUl.childNodes[index];\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n var id = this.getId(dropLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n else {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function () {\n this.renderReactTemplates();\n var eventArgs = { data: this.treeData };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'focus', this.focusIn, this);\n EventHandler.add(this.element, 'blur', this.focusOut, this);\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'focus', this.focusIn);\n EventHandler.remove(this.element, 'blur', this.focusOut);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent();\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent();\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent();\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.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 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n this.reRenderNodes();\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.element.removeAttribute('tabindex');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent();\n }\n };\n /**\n * Instead of clicking on the TreeView node for editing, we can enable it by using\n * `beginEdit` property. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var liEle = this.getElement(node);\n if (isNOU(liEle)) {\n return;\n }\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n setTimeout(function () { liEle.scrollIntoView(true); }, 450);\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent();\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent();\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n };\n Tooltip.prototype.closePopupHandler = function () {\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent[this.enableHtmlParse ? 'innerHTML' : 'textContent'] = this.content;\n }\n else {\n // eslint-disable-next-line\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n // eslint-disable-next-line\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, \"mousemove touchstart\", this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, \"mousemove touchstart\", this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // eslint-disable-next-line\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n // eslint-disable-next-line\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n // eslint-disable-next-line\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n // eslint-disable-next-line\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n // eslint-disable-next-line\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n // eslint-disable-next-line\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n this.trigger('change', { value: value, event: event });\n if (this.tagName === 'EJS-RADIOBUTTON') {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.element.parentElement;\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n if (this.isVue && value && value === this.value) {\n this.checked = true;\n }\n if (this.isVue ? this.value && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelRippleHandler = function (e) {\n var ripple = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, ripple);\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (!isNullOrUndefined(this.htmlAttributes) && this.htmlAttributes.value) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.getLabel();\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-owns': this.element.id + '_options',\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-hasPopup': 'true',\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.isServerBlazor) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n }\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n this.inlineSearch();\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = this.list.querySelector('.' + dropDownListClasses.selected);\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var activeItem = Search(inputValue, this.liCollections, 'StartsWith', true);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n if (this.isServerBlazor && this.isFiltering() && this.isPopupOpen && e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, true);\n }\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length < 0) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup();\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue) {\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup();\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function () {\n _super.prototype.showPopup.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = this.list.querySelector('.' + dropDownListClasses.selected);\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @blazorType object\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/* eslint-disable jsdoc/require-param, valid-jsdoc */\n/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type, isBlazor) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex), isBlazor);\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @param {boolean} isBlazor - Specifies the platform is Blazor or not.\n * @returns {void}\n */\nfunction findTextNode(element, pattern, isBlazor) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n element = (isBlazor && element.classList.contains('e-highlight')) ? element.parentElement : element;\n if (isBlazor && element.getAttribute('data-value')) {\n element.innerHTML = element.getAttribute('data-value').replace(pattern, '$1');\n }\n else {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n }\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern, isBlazor);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, attributes, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFiltered = false;\n _this.searchList = false;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.isFiltering() && !this.beforePopupOpen) ? !this.beforePopupOpen : this.beforePopupOpen;\n this.queryString = this.filterInput.value;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n else {\n this.hidePopup();\n }\n }\n else {\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\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.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.searchList = true;\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query);\n }\n else {\n this.hidePopup();\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n if (this.isServerBlazor) {\n this.removeHover();\n }\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n _super.prototype.setAutoFill.call(this, li);\n }\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.element.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function () {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen && !this.isServerBlazor) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list) || this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.resetList(this.dataSource, this.fields);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function () {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n _super.prototype.hidePopup.call(this);\n this.activeIndex = -1;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n if (!this.isServerBlazor) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n }\n else if (this.inputWrapper && this.inputWrapper.container) {\n var button = this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon');\n this.inputWrapper.buttons[0] = button;\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else if (!this.isServerBlazor) {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType, this.isServerBlazor);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `DropDownButtonComponent` represents the react DropDownButton Component.\n * ```ts\n * \n * ```\n */\nvar DropDownButtonComponent = /** @class */ (function (_super) {\n __extends(DropDownButtonComponent, _super);\n function DropDownButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'dropDownButtonItems': 'dropDownButtonItem' };\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DropDownButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return DropDownButtonComponent;\n}(DropDownButton));\nexport { DropDownButtonComponent };\napplyMixins(DropDownButtonComponent, [ComponentBase, React.Component]);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar NavItem = function NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"active\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n onClick: PropTypes.func,\n href: PropTypes.any\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(NavLink, _React$Component);\n\n function NavLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = NavLink.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.href === '#') {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"]);\n\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n };\n\n return NavLink;\n}(React.Component);\n\nNavLink.propTypes = propTypes;\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n light: PropTypes.bool,\n dark: PropTypes.bool,\n full: PropTypes.bool,\n fixed: PropTypes.string,\n sticky: PropTypes.string,\n color: PropTypes.string,\n role: PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'nav',\n expand: false\n};\n\nvar getExpandClass = function getExpandClass(expand) {\n if (expand === false) {\n return false;\n } else if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n\n return \"navbar-expand-\" + expand;\n};\n\nvar Navbar = function Navbar(props) {\n var _classNames;\n\n var expand = props.expand,\n className = props.className,\n cssModule = props.cssModule,\n light = props.light,\n dark = props.dark,\n fixed = props.fixed,\n sticky = props.sticky,\n color = props.color,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"expand\", \"className\", \"cssModule\", \"light\", \"dark\", \"fixed\", \"sticky\", \"color\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand), (_classNames = {\n 'navbar-light': light,\n 'navbar-dark': dark\n }, _classNames[\"bg-\" + color] = color, _classNames[\"fixed-\" + fixed] = fixed, _classNames[\"sticky-\" + sticky] = sticky, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\nexport default Navbar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"fluid\", \"tag\"]);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node\n};\nvar defaultProps = {\n tag: 'button',\n type: 'button'\n};\n\nvar NavbarToggler = function NavbarToggler(props) {\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"children\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'navbar-toggler'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n \"aria-label\": \"Toggle navigation\"\n }, attributes, {\n className: classes\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('navbar-toggler-icon', cssModule)\n }));\n};\n\nNavbarToggler.propTypes = propTypes;\nNavbarToggler.defaultProps = defaultProps;\nexport default NavbarToggler;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CarouselItem from './CarouselItem';\nimport { mapToCssModules } from './utils';\nvar SWIPE_THRESHOLD = 40;\n\nvar Carousel = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Carousel, _React$Component);\n\n function Carousel(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.handleKeyPress = _this.handleKeyPress.bind(_assertThisInitialized(_this));\n _this.renderItems = _this.renderItems.bind(_assertThisInitialized(_this));\n _this.hoverStart = _this.hoverStart.bind(_assertThisInitialized(_this));\n _this.hoverEnd = _this.hoverEnd.bind(_assertThisInitialized(_this));\n _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n _this.touchStartX = 0;\n _this.touchStartY = 0;\n _this.state = {\n activeIndex: _this.props.activeIndex,\n direction: 'right',\n indicatorClicked: false\n };\n return _this;\n }\n\n var _proto = Carousel.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n direction: this.state.direction\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Set up the cycle\n if (this.props.ride === 'carousel') {\n this.setInterval();\n } // TODO: move this to the specific carousel like bootstrap. Currently it will trigger ALL carousels on the page.\n\n\n document.addEventListener('keyup', this.handleKeyPress);\n };\n\n Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var newState = null;\n var activeIndex = prevState.activeIndex,\n direction = prevState.direction,\n indicatorClicked = prevState.indicatorClicked;\n\n if (nextProps.activeIndex !== activeIndex) {\n // Calculate the direction to turn\n if (nextProps.activeIndex === activeIndex + 1) {\n direction = 'right';\n } else if (nextProps.activeIndex === activeIndex - 1) {\n direction = 'left';\n } else if (nextProps.activeIndex < activeIndex) {\n direction = indicatorClicked ? 'left' : 'right';\n } else if (nextProps.activeIndex !== activeIndex) {\n direction = indicatorClicked ? 'right' : 'left';\n }\n\n newState = {\n activeIndex: nextProps.activeIndex,\n direction: direction,\n indicatorClicked: false\n };\n }\n\n return newState;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.activeIndex === this.state.activeIndex) return;\n this.setInterval(this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearInterval();\n document.removeEventListener('keyup', this.handleKeyPress);\n };\n\n _proto.setInterval = function (_setInterval) {\n function setInterval() {\n return _setInterval.apply(this, arguments);\n }\n\n setInterval.toString = function () {\n return _setInterval.toString();\n };\n\n return setInterval;\n }(function (props) {\n if (props === void 0) {\n props = this.props;\n }\n\n // make sure not to have multiple intervals going...\n this.clearInterval();\n\n if (props.interval) {\n this.cycleInterval = setInterval(function () {\n props.next();\n }, parseInt(props.interval, 10));\n }\n });\n\n _proto.clearInterval = function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n\n return clearInterval;\n }(function () {\n clearInterval(this.cycleInterval);\n });\n\n _proto.hoverStart = function hoverStart() {\n if (this.props.pause === 'hover') {\n this.clearInterval();\n }\n\n if (this.props.mouseEnter) {\n var _this$props;\n\n (_this$props = this.props).mouseEnter.apply(_this$props, arguments);\n }\n };\n\n _proto.hoverEnd = function hoverEnd() {\n if (this.props.pause === 'hover') {\n this.setInterval();\n }\n\n if (this.props.mouseLeave) {\n var _this$props2;\n\n (_this$props2 = this.props).mouseLeave.apply(_this$props2, arguments);\n }\n };\n\n _proto.handleKeyPress = function handleKeyPress(evt) {\n if (this.props.keyboard) {\n if (evt.keyCode === 37) {\n this.props.previous();\n } else if (evt.keyCode === 39) {\n this.props.next();\n }\n }\n };\n\n _proto.handleTouchStart = function handleTouchStart(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n this.touchStartX = e.changedTouches[0].screenX;\n this.touchStartY = e.changedTouches[0].screenY;\n };\n\n _proto.handleTouchEnd = function handleTouchEnd(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n var currentX = e.changedTouches[0].screenX;\n var currentY = e.changedTouches[0].screenY;\n var diffX = Math.abs(this.touchStartX - currentX);\n var diffY = Math.abs(this.touchStartY - currentY); // Don't swipe if Y-movement is bigger than X-movement\n\n if (diffX < diffY) {\n return;\n }\n\n if (diffX < SWIPE_THRESHOLD) {\n return;\n }\n\n if (currentX < this.touchStartX) {\n this.props.next();\n } else {\n this.props.previous();\n }\n };\n\n _proto.renderItems = function renderItems(carouselItems, className) {\n var _this2 = this;\n\n var slide = this.props.slide;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, carouselItems.map(function (item, index) {\n var isIn = index === _this2.state.activeIndex;\n return /*#__PURE__*/React.cloneElement(item, {\n in: isIn,\n slide: slide\n });\n }));\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n cssModule = _this$props3.cssModule,\n slide = _this$props3.slide,\n className = _this$props3.className;\n var outerClasses = mapToCssModules(classNames(className, 'carousel', slide && 'slide'), cssModule);\n var innerClasses = mapToCssModules(classNames('carousel-inner'), cssModule); // filter out booleans, null, or undefined\n\n var children = this.props.children.filter(function (child) {\n return child !== null && child !== undefined && typeof child !== 'boolean';\n });\n var slidesOnly = children.every(function (child) {\n return child.type === CarouselItem;\n }); // Rendering only slides\n\n if (slidesOnly) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(children, innerClasses));\n } // Rendering slides and controls\n\n\n if (children[0] instanceof Array) {\n var _carouselItems = children[0];\n var _controlLeft = children[1];\n var _controlRight = children[2];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(_carouselItems, innerClasses), _controlLeft, _controlRight);\n } // Rendering indicators, slides and controls\n\n\n var indicators = children[0];\n\n var wrappedOnClick = function wrappedOnClick(e) {\n if (typeof indicators.props.onClickHandler === 'function') {\n _this3.setState({\n indicatorClicked: true\n }, function () {\n return indicators.props.onClickHandler(e);\n });\n }\n };\n\n var wrappedIndicators = /*#__PURE__*/React.cloneElement(indicators, {\n onClickHandler: wrappedOnClick\n });\n var carouselItems = children[1];\n var controlLeft = children[2];\n var controlRight = children[3];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n }, wrappedIndicators, this.renderItems(carouselItems, innerClasses), controlLeft, controlRight);\n };\n\n return Carousel;\n}(React.Component);\n\nCarousel.propTypes = {\n // the current active slide of the carousel\n activeIndex: PropTypes.number,\n // a function which should advance the carousel to the next slide (via activeIndex)\n next: PropTypes.func.isRequired,\n // a function which should advance the carousel to the previous slide (via activeIndex)\n previous: PropTypes.func.isRequired,\n // controls if the left and right arrow keys should control the carousel\n keyboard: PropTypes.bool,\n\n /* If set to \"hover\", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on\n * mouseleave. If set to false, hovering over the carousel won't pause it. (default: \"hover\")\n */\n pause: PropTypes.oneOf(['hover', false]),\n // Autoplays the carousel after the user manually cycles the first item. If \"carousel\", autoplays the carousel on load.\n // This is how bootstrap defines it... I would prefer a bool named autoplay or something...\n ride: PropTypes.oneOf(['carousel']),\n // the interval at which the carousel automatically cycles (default: 5000)\n // eslint-disable-next-line react/no-unused-prop-types\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool]),\n children: PropTypes.array,\n // called when the mouse enters the Carousel\n mouseEnter: PropTypes.func,\n // called when the mouse exits the Carousel\n mouseLeave: PropTypes.func,\n // controls whether the slide animation on the Carousel works or not\n slide: PropTypes.bool,\n cssModule: PropTypes.object,\n className: PropTypes.string,\n enableTouch: PropTypes.bool\n};\nCarousel.defaultProps = {\n interval: 5000,\n pause: 'hover',\n keyboard: true,\n slide: true,\n enableTouch: true\n};\nCarousel.childContextTypes = {\n direction: PropTypes.string\n};\nexport default Carousel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\n\nvar CarouselIndicators = function CarouselIndicators(props) {\n var items = props.items,\n activeIndex = props.activeIndex,\n cssModule = props.cssModule,\n onClickHandler = props.onClickHandler,\n className = props.className;\n var listClasses = mapToCssModules(classNames(className, 'carousel-indicators'), cssModule);\n var indicators = items.map(function (item, idx) {\n var indicatorClasses = mapToCssModules(classNames({\n active: activeIndex === idx\n }), cssModule);\n return /*#__PURE__*/React.createElement(\"li\", {\n key: \"\" + (item.key || Object.values(item).join('')),\n onClick: function onClick(e) {\n e.preventDefault();\n onClickHandler(idx);\n },\n className: indicatorClasses\n });\n });\n return /*#__PURE__*/React.createElement(\"ol\", {\n className: listClasses\n }, indicators);\n};\n\nCarouselIndicators.propTypes = {\n items: PropTypes.array.isRequired,\n activeIndex: PropTypes.number.isRequired,\n cssModule: PropTypes.object,\n onClickHandler: PropTypes.func.isRequired,\n className: PropTypes.string\n};\nexport default CarouselIndicators;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\n\nvar CarouselCaption = function CarouselCaption(props) {\n var captionHeader = props.captionHeader,\n captionText = props.captionText,\n cssModule = props.cssModule,\n className = props.className;\n var classes = mapToCssModules(classNames(className, 'carousel-caption', 'd-none', 'd-md-block'), cssModule);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classes\n }, /*#__PURE__*/React.createElement(\"h3\", null, captionHeader), /*#__PURE__*/React.createElement(\"p\", null, captionText));\n};\n\nCarouselCaption.propTypes = {\n captionHeader: PropTypes.node,\n captionText: PropTypes.node.isRequired,\n cssModule: PropTypes.object,\n className: PropTypes.string\n};\nexport default CarouselCaption;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '${name}', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '${size}'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (!this.renameParent) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n }\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n updatePath(args.node, this.parent.itemData[0], this.parent);\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = select('.' + CLS.LIST_PARENT, sNode);\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n this.isRenameParent = true;\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { Resize } from '../actions/resize';\nimport { Page } from '../actions/page';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { PdfExport } from '../actions/pdf-export';\nimport { ExcelExport } from '../actions/excel-export';\nimport * as literals from '../base/string-literals';\nexport var menuClass = {\n header: '.' + literals.gridHeader,\n content: '.' + literals.gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialLoad, this.render, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.destroy, this.destroy);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ContextMenu.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new Menu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(literals.ariaColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(literals.ariaRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(literals.ariaColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuClick, args);\n };\n ContextMenu.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][parent] instanceof Menu) {\n this.updateItemStatus();\n }\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[item]);\n };\n ContextMenu.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[literals.changedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.addedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : literals.tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + literals.table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.isFrozenGrid() || this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if ((this.parent.getSelectedRowIndexes().length === 0 && this.parent.getSelectedRowCellIndexes().length === 0) ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[i].field === this.targetColumn.field\n && sortColumns[i].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n if (this.element.parentNode) {\n remove(this.element);\n }\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[item];\n };\n ContextMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(literals.ariaRowIndex), 10));\n }\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\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","import { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'), iconCss: CLS.TB_OPTION_DOT },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size') },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified') },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '';\n var largeIconSpan = '';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n content: '' + getLocaleText(this.parent, 'View') + ''\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '' + itemText + '';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: ''\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: ''\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Dialog Component\n * ```html\n * \n * ```\n */\nvar DialogComponent = /** @class */ (function (_super) {\n __extends(DialogComponent, _super);\n function DialogComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'buttons': 'dialogButton' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DialogComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return DialogComponent;\n}(Dialog));\nexport { DialogComponent };\napplyMixins(DialogComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
    \n * \n * \n *
    \n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[name], rules, {});\n }\n else {\n this.rules[name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[name] && !rules) {\n delete this.rules[name];\n }\n else if (!isNullOrUndefined(this.rules[name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[name][rules[i]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formValidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[name]) {\n return;\n }\n var rules = Object.keys(this.rules[name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[name][rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[name][rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[name][rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[rule] : this.defaultMessages[rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[i] : ruleValue;\n message = message.replace(formats[i], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[i];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n return !isNaN(new Date(option.value).getTime());\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType\n};\nvar defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n widths = props.widths,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\", \"widths\"]);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\" + colSize : \"row-cols-\" + colWidth + \"-\" + colSize);\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Uploader Component\n * ```html\n * \n * ```\n */\nvar UploaderComponent = /** @class */ (function (_super) {\n __extends(UploaderComponent, _super);\n function UploaderComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'files': 'uploadedFiles' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n UploaderComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return UploaderComponent;\n}(Uploader));\nexport { UploaderComponent };\napplyMixins(UploaderComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * \n * ```\n */\nvar CheckBoxComponent = /** @class */ (function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n CheckBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return CheckBoxComponent;\n}(CheckBox));\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DatePicker Component.\n * ```ts\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DatePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DatePickerComponent;\n}(DatePicker));\nexport { DatePickerComponent };\napplyMixins(DatePickerComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GridComponent` represents the react Grid.\n * ```tsx\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': 'column', 'aggregates': { 'aggregate': { 'aggregateColumns': 'aggregateColumn' } } };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GridComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return GridComponent;\n}(Grid));\nexport { GridComponent };\napplyMixins(GridComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.moduleName = 'column';\n ColumnDirective.complexTemplate = { 'filterItemTemplate': 'filter.itemTemplate' };\n return ColumnDirective;\n}(ComplexBase));\nexport { ColumnDirective };\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.propertyName = 'columns';\n ColumnsDirective.moduleName = 'columns';\n return ColumnsDirective;\n}(ComplexBase));\nexport { ColumnsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { initForeignKeyColumn, getForeignKeyData, generateQuery } from '../base/constant';\nimport { getDatePredicate } from '../base/util';\nimport { Data } from './data';\nimport * as events from '../base/constant';\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @class */ (function (_super) {\n __extends(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[i].dataSource = (columns[i].dataSource instanceof DataManager ? columns[i].dataSource :\n (isNullOrUndefined(columns[i].dataSource) ? new DataManager() : 'result' in columns[i].dataSource ? columns[i].dataSource :\n new DataManager(columns[i].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(events.columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[i]) :\n this_1.genarateQuery(foreignColumns[i], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[i].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[i]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[i].columnData = responses[i].result;\n if (foreignColumns[i].editType === 'dropdownedit' && 'result' in foreignColumns[i].dataSource) {\n foreignColumns[i].edit.params = extend(foreignColumns[i].edit.params, {\n dataSource: responses[i].result,\n query: new Query(), fields: {\n value: foreignColumns[i].foreignKeyField || foreignColumns[i].field,\n text: foreignColumns[i].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[i] && filteredValue[i].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[i], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[i], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\nexport { ForeignKey };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener } 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 *\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 var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[item].text = '';\n this.predefinedItems[item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n 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', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n 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.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.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\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 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 this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('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 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 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.enableAdaptiveUI && this.parent.toolbar.indexOf('Search') > -1) {\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 *\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 * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_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 = args;\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 /* eslint-disable */\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 /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\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.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, 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 addRemoveEventListener(this.parent, this.evtHandlers, false);\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 * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n, isBlazor } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange && isBlazor())) || (this.parent.isDynamicDataChange &&\n !isNullOrUndefined(this.parent.value) && this.parent.value.length <= 1 && isBlazor())) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n var isBlazorListbox = isBlazor() && (args.module && args.module === 'listbox');\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1])\n : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]);\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? (isBlazorListbox ?\n checkboxWrapper.querySelector('.e-frame') : checkboxWrapper.childNodes[1]) : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.parent.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) &&\n !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check' && this.checkAllParent.getAttribute('aria-checked') !== 'true') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n append(this.parent.ulElement.querySelectorAll('li.e-active'), ulEle);\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The AutoComplete component provides the matched suggestion list when type into the input, from which the user can select one.\n * ```\n * \n * ```\n */\nvar AutoCompleteComponent = /** @class */ (function (_super) {\n __extends(AutoCompleteComponent, _super);\n function AutoCompleteComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n AutoCompleteComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return AutoCompleteComponent;\n}(AutoComplete));\nexport { AutoCompleteComponent };\napplyMixins(AutoCompleteComponent, [ComponentBase, React.Component]);\n","import { addClass, detach, EventHandler, isNullOrUndefined, select, isBlazor, Ajax } from '@syncfusion/ej2-base';\nimport { Browser, closest, removeClass, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { Uploader, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button, CheckBox } from '@syncfusion/ej2-buttons';\nimport { RenderType } from '../base/enum';\nimport { dispatchEvent, parseHtml, hasClass, convertToBlob } from '../base/util';\nimport { isIDevice } from '../../common/util';\n/**\n * `Image` module is used to handle image actions.\n */\nvar Image = /** @class */ (function () {\n function Image(parent, serviceLocator) {\n this.isImgUploaded = false;\n this.pageX = null;\n this.pageY = null;\n this.deletedImg = [];\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Image.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.keyUp, this.onKeyUp, this);\n this.parent.on(events.insertImage, this.insertImage, this);\n this.parent.on(events.showImageDialog, this.showDialog, this);\n this.parent.on(events.closeImageDialog, this.closeDialog, this);\n this.parent.on(events.windowResize, this.onWindowResize, this);\n this.parent.on(events.insertCompleted, this.showImageQuickToolbar, this);\n this.parent.on(events.clearDialogObj, this.clearDialogObj, this);\n this.parent.on(events.imageToolbarAction, this.onToolbarAction, this);\n this.parent.on(events.imageCaption, this.caption, this);\n this.parent.on(events.imageDelete, this.deleteImg, this);\n this.parent.on(events.imageLink, this.insertImgLink, this);\n this.parent.on(events.imageAlt, this.insertAltText, this);\n this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.imageSize, this.imageSize, this);\n this.parent.on(events.dropDownSelect, this.alignmentSelect, this);\n this.parent.on(events.initialEnd, this.afterRender, this);\n this.parent.on(events.dynamicModule, this.afterRender, this);\n this.parent.on(events.paste, this.imagePaste, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n Image.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.keyUp, this.onKeyUp);\n this.parent.off(events.windowResize, this.onWindowResize);\n this.parent.off(events.insertImage, this.insertImage);\n this.parent.off(events.showImageDialog, this.showDialog);\n this.parent.off(events.closeImageDialog, this.closeDialog);\n this.parent.off(events.insertCompleted, this.showImageQuickToolbar);\n this.parent.off(events.clearDialogObj, this.clearDialogObj);\n this.parent.off(events.imageCaption, this.caption);\n this.parent.off(events.imageToolbarAction, this.onToolbarAction);\n this.parent.off(events.imageDelete, this.deleteImg);\n this.parent.off(events.imageLink, this.insertImgLink);\n this.parent.off(events.imageAlt, this.insertAltText);\n this.parent.off(events.editAreaClick, this.editAreaClickHandler);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.imageSize, this.imageSize);\n this.parent.off(events.dropDownSelect, this.alignmentSelect);\n this.parent.off(events.initialEnd, this.afterRender);\n this.parent.off(events.dynamicModule, this.afterRender);\n this.parent.off(events.paste, this.imagePaste);\n this.parent.off(events.destroy, this.removeEventListener);\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument\n : this.parent.inputElement;\n dropElement.removeEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.removeEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.removeEventListener('dragenter', this.dragEnter.bind(this), true);\n dropElement.removeEventListener('dragover', this.dragOver.bind(this), true);\n if (!isNullOrUndefined(this.contentModule)) {\n EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick);\n this.parent.formatter.editorManager.observer.off(events.checkUndo, this.undoStack);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart);\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.contentModule.getEditPanel(), 'cut', this.onCutHandler);\n }\n }\n };\n Image.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Image.prototype.afterRender = function () {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n EventHandler.add(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick, this);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart, this);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.contentModule.getEditPanel(), 'cut', this.onCutHandler, this);\n }\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument :\n this.parent.inputElement;\n dropElement.addEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.addEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.addEventListener('dragenter', this.dragOver.bind(this), true);\n dropElement.addEventListener('dragover', this.dragOver.bind(this), true);\n };\n Image.prototype.undoStack = function (args) {\n if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {\n for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {\n var temp = this.parent.createElement('div');\n var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);\n temp.appendChild(contentElem);\n var img = temp.querySelectorAll('img');\n if (temp.querySelector('.e-img-resize') && img.length > 0) {\n for (var j = 0; j < img.length; j++) {\n img[j].style.outline = '';\n }\n detach(temp.querySelector('.e-img-resize'));\n this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;\n }\n }\n }\n };\n Image.prototype.resizeEnd = function (e) {\n this.resizeBtnInit();\n this.imgEle.parentElement.style.cursor = 'auto';\n if (Browser.isDevice) {\n removeClass([e.target.parentElement], 'e-mob-span');\n }\n var args = isBlazor() ? { requestType: 'images' } : { event: e, requestType: 'images' };\n this.parent.trigger(events.resizeStop, args);\n /* eslint-disable */\n var pageX = this.getPointX(e);\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + e.clientY : e.pageY;\n /* eslint-enable */\n this.parent.formatter.editorManager.observer.on(events.checkUndo, this.undoStack, this);\n this.parent.formatter.saveData();\n };\n Image.prototype.resizeStart = function (e, ele) {\n var _this = this;\n if (this.parent.readonly) {\n return;\n }\n var target = ele ? ele : e.target;\n this.prevSelectedImgEle = this.imgEle;\n if (target.tagName === 'IMG') {\n this.parent.preventDefaultResize(e);\n var img = target;\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n }\n this.imageResize(img);\n }\n if (target.classList.contains('e-rte-imageboxmark')) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.pageX = this.getPointX(e);\n this.pageY = this.getPointY(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resizeBtnInit();\n if (this.quickToolObj) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n if (target.classList.contains('e-rte-topLeft')) {\n this.resizeBtnStat.topLeft = true;\n }\n if (target.classList.contains('e-rte-topRight')) {\n this.resizeBtnStat.topRight = true;\n }\n if (target.classList.contains('e-rte-botLeft')) {\n this.resizeBtnStat.botLeft = true;\n }\n if (target.classList.contains('e-rte-botRight')) {\n this.resizeBtnStat.botRight = true;\n }\n if (Browser.isDevice && this.contentModule.getEditPanel().contains(this.imgResizeDiv) &&\n !this.imgResizeDiv.classList.contains('e-mob-span')) {\n addClass([this.imgResizeDiv], 'e-mob-span');\n }\n else {\n var args = isBlazor() ? { requestType: 'images' } : { event: e, requestType: 'images' };\n this.parent.trigger(events.resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.cancelResizeAction();\n }\n });\n }\n EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);\n }\n };\n Image.prototype.imageClick = function (e) {\n if (Browser.isDevice) {\n if ((e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') ||\n (e.target.tagName === 'IMG')) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n e.target.focus();\n }\n else {\n if (!this.parent.readonly) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n }\n }\n if (e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') {\n e.preventDefault();\n }\n };\n Image.prototype.onCutHandler = function () {\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n };\n Image.prototype.imageResize = function (e) {\n this.resizeBtnInit();\n this.imgEle = e;\n addClass([this.imgEle], 'e-resize');\n this.imgResizeDiv = this.parent.createElement('span', { className: 'e-img-resize', id: this.rteID + '_imgResize' });\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topLeft', styles: 'cursor: nwse-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topRight', styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botLeft', styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botRight', styles: 'cursor: nwse-resize'\n }));\n if (Browser.isDevice) {\n addClass([this.imgResizeDiv], 'e-mob-rte');\n }\n e.style.outline = '2px solid #4a90e2';\n this.imgResizePos(e, this.imgResizeDiv);\n this.resizeImgDupPos(e);\n this.contentModule.getEditPanel().appendChild(this.imgResizeDiv);\n EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);\n };\n Image.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Image.prototype.getPointY = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageY;\n }\n else {\n return e.pageY;\n }\n };\n Image.prototype.imgResizePos = function (e, imgResizeDiv) {\n var pos = this.calcPos(e);\n var top = pos.top;\n var left = pos.left;\n var imgWid = e.width;\n var imgHgt = e.height;\n var borWid = (Browser.isDevice) ? (4 * parseInt((e.style.outline.slice(-3)), 10)) + 2 :\n (2 * parseInt((e.style.outline.slice(-3)), 10)) + 2; //span border width + image outline width\n var devWid = ((Browser.isDevice) ? 0 : 2); // span border width\n imgResizeDiv.querySelector('.e-rte-botLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-botLeft').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.top = (top - (borWid)) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.top = (top - borWid) + 'px';\n };\n Image.prototype.calcPos = function (elem) {\n var ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];\n var parentOffset = { top: 0, left: 0 };\n var doc = elem.ownerDocument;\n var offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption') ||\n ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ?\n closest(elem, '#' + this.parent.getID() + '_rte-edit-view') : elem.offsetParent) || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // eslint-disable-next-line\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: elem.offsetTop,\n left: elem.offsetLeft\n };\n };\n Image.prototype.setAspectRatio = function (img, expectedX, expectedY) {\n if (isNullOrUndefined(img.width)) {\n return;\n }\n var width = img.style.width !== '' ? img.style.width.match(/^\\d+(\\.\\d*)?%$/g) ? parseFloat(img.style.width) :\n parseInt(img.style.width, 10) : img.width;\n var height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;\n if (width > height) {\n img.style.minWidth = '20px';\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '') !== 0 && parseInt('' + width + '') !== 0) {\n var percentageValue = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement));\n img.style.width = Math.min(Math.round((percentageValue / img.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';\n }\n else {\n img.style.width = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width !== '') {\n img.style.width = (width / height * expectedY) + 'px';\n img.style.height = expectedY + 'px';\n }\n else {\n img.setAttribute('width', ((width / height * expectedY) + width / height).toString());\n }\n }\n else if (height > width) {\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '') !== 0 && parseInt('' + width + '') !== 0) {\n img.style.width = Math.min(Math.round((width / img.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';\n }\n else {\n img.style.width = this.pixToPerc((expectedX / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width !== '') {\n img.style.width = expectedX + 'px';\n img.style.height = (height / width * expectedX) + 'px';\n }\n else {\n img.setAttribute('width', expectedX.toString());\n }\n }\n else {\n if (this.parent.insertImageSettings.resizeByPercent) {\n img.style.width = this.pixToPerc(expectedX, (img.previousElementSibling || img.parentElement)) + '%';\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width !== '') {\n img.style.width = expectedX + 'px';\n img.style.height = expectedX + 'px';\n }\n else {\n img.setAttribute('width', expectedX.toString());\n img.setAttribute('height', expectedX.toString());\n }\n }\n };\n Image.prototype.pixToPerc = function (expected, parentEle) {\n return expected / parseFloat(getComputedStyle(parentEle).width) * 100;\n };\n Image.prototype.imgDupMouseMove = function (width, height, e) {\n var _this = this;\n var args = isBlazor() ? { requestType: 'images' } : { event: e, requestType: 'images' };\n this.parent.trigger(events.onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.cancelResizeAction();\n }\n else {\n if ((parseInt(_this.parent.insertImageSettings.minWidth, 10) >= parseInt(width, 10) ||\n (parseInt(_this.parent.getInsertImgMaxWidth(), 10) <= parseInt(width, 10) &&\n isNOU(_this.imgEle.style.width)))) {\n return;\n }\n if (!_this.parent.insertImageSettings.resizeByPercent &&\n (parseInt(_this.parent.insertImageSettings.minHeight, 10) >= parseInt(height, 10) ||\n parseInt(_this.parent.insertImageSettings.maxHeight, 10) <= parseInt(height, 10))) {\n return;\n }\n _this.imgEle.parentElement.style.cursor = 'pointer';\n _this.setAspectRatio(_this.imgEle, parseInt(width, 10), parseInt(height, 10));\n _this.resizeImgDupPos(_this.imgEle);\n _this.imgResizePos(_this.imgEle, _this.imgResizeDiv);\n _this.parent.setContentHeight('', false);\n }\n });\n };\n Image.prototype.resizing = function (e) {\n if (this.imgEle.offsetWidth >= this.parent.getInsertImgMaxWidth()) {\n this.imgEle.style.maxHeight = this.imgEle.offsetHeight + 'px';\n }\n var pageX = this.getPointX(e);\n var pageY = this.getPointY(e);\n var mouseX = (this.resizeBtnStat.botLeft || this.resizeBtnStat.topLeft) ? -(pageX - this.pageX) : (pageX - this.pageX);\n var mouseY = (this.resizeBtnStat.topLeft || this.resizeBtnStat.topRight) ? -(pageY - this.pageY) : (pageY - this.pageY);\n var width = parseInt(this.imgDupPos.width, 10) + mouseX;\n var height = parseInt(this.imgDupPos.height, 10) + mouseY;\n this.pageX = pageX;\n this.pageY = pageY;\n if (this.resizeBtnStat.botRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.botLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n };\n Image.prototype.cancelResizeAction = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n if (this.imgEle && this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n this.imgEle.style.outline = '';\n this.imgResizeDiv = null;\n this.pageX = null;\n this.pageY = null;\n }\n };\n Image.prototype.resizeImgDupPos = function (e) {\n this.imgDupPos = {\n width: (e.style.height !== '') ? this.imgEle.style.width : e.width + 'px',\n height: (e.style.height !== '') ? this.imgEle.style.height : e.height + 'px'\n };\n };\n Image.prototype.resizeBtnInit = function () {\n return this.resizeBtnStat = { botLeft: false, botRight: false, topRight: false, topLeft: false };\n };\n Image.prototype.onToolbarAction = function (args) {\n if (isIDevice()) {\n this.parent.notify(events.selectionRestore, {});\n }\n var item = args.args.item;\n switch (item.subCommand) {\n case 'Replace':\n if (this.parent.fileManagerSettings.enable) {\n this.parent.notify(events.renderFileManager, args);\n }\n else {\n this.parent.notify(events.insertImage, args);\n }\n break;\n case 'Caption':\n this.parent.notify(events.imageCaption, args);\n break;\n case 'InsertLink':\n this.parent.notify(events.imageLink, args);\n break;\n case 'AltText':\n this.parent.notify(events.imageAlt, args);\n break;\n case 'Remove':\n this.parent.notify(events.imageDelete, args);\n break;\n case 'Dimension':\n this.parent.notify(events.imageSize, args);\n break;\n case 'OpenImageLink':\n this.openImgLink(args);\n break;\n case 'EditImageLink':\n this.editImgLink(args);\n break;\n case 'RemoveImageLink':\n this.removeImgLink(args);\n break;\n }\n };\n Image.prototype.openImgLink = function (e) {\n var target = e.selectParent[0].parentNode.target === '' ? '_self' : '_blank';\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: e.selectParent[0].parentNode.href, target: target, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n };\n Image.prototype.editImgLink = function (e) {\n var selectParentEle = e.selectParent[0].parentNode;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.href, target: selectParentEle.target,\n header: 'Edit Link', btnText: linkUpdate\n };\n this.insertImgLink(e, inputDetails);\n };\n Image.prototype.removeImgLink = function (e) {\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n }\n e.selection.restore();\n var isCapLink = (this.contentModule.getEditPanel().contains(this.captionEle) && select('a', this.captionEle)) ?\n true : false;\n var selectParent = isCapLink ? [this.captionEle] : [e.selectNode[0].parentElement];\n this.parent.formatter.process(this.parent, e.args, e.args, {\n insertElement: e.selectNode[0], selectParent: selectParent, selection: e.selection,\n subCommand: e.args.item.subCommand\n });\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (isCapLink) {\n select('.e-img-inner', this.captionEle).focus();\n }\n };\n Image.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n this.deletedImg = [];\n var isCursor;\n var keyCodeValues = [27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,\n 44, 45, 9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 91, 92, 93, 144, 145, 182, 183];\n if (this.parent.editorMode === 'HTML') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n isCursor = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n if (!isCursor && this.parent.editorMode === 'HTML' && keyCodeValues.indexOf(originalEvent.which) < 0) {\n var nodes = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeName === 'IMG') {\n this.deletedImg.push(nodes[i]);\n }\n }\n }\n if (this.parent.editorMode === 'HTML' && ((originalEvent.which === 8 && originalEvent.code === 'Backspace') ||\n (originalEvent.which === 46 && originalEvent.code === 'Delete'))) {\n var isCursor_1 = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n if ((originalEvent.which === 8 && originalEvent.code === 'Backspace' && isCursor_1)) {\n this.checkImageBack(range);\n }\n else if ((originalEvent.which === 46 && originalEvent.code === 'Delete' && isCursor_1)) {\n this.checkImageDel(range);\n }\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&\n originalEvent.code !== 'KeyK') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&\n (selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {\n var prev = selectParentEle[0].parentElement.childNodes[0];\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);\n removeClass([selectParentEle[0]], 'e-img-focus');\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {\n this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });\n }\n if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {\n if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {\n originalEvent.preventDefault();\n var event_1 = {\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,\n args: {\n item: { command: 'Images', subCommand: 'Remove' },\n originalEvent: originalEvent\n }\n };\n this.deleteImg(event_1, originalEvent.keyCode);\n }\n if (this.parent.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n }\n if (originalEvent.code === 'Backspace') {\n originalEvent.action = 'backspace';\n }\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'backspace':\n case 'delete':\n for (var i = 0; i < this.deletedImg.length; i++) {\n var src = this.deletedImg[i].src;\n this.imageRemovePost(src);\n }\n break;\n case 'insert-image':\n this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);\n originalEvent.preventDefault();\n break;\n }\n };\n Image.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n if (!isInternal && !isNOU(this.parent.formatter.editorManager.nodeSelection)) {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = selection;\n selectNodeEle = ele;\n selectParentEle = parentEle;\n }\n if (this.parent.editorMode === 'HTML') {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event\n },\n selectNode: selectNodeEle,\n selection: save,\n selectParent: selectParentEle\n });\n }\n else {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event\n },\n member: 'image',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertImage'\n });\n }\n };\n Image.prototype.showDialog = function () {\n this.openDialog(false);\n };\n Image.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n // eslint-disable-next-line\n Image.prototype.onKeyUp = function (event) {\n if (!isNOU(this.deletedImg) && this.deletedImg.length > 0) {\n for (var i = 0; i < this.deletedImg.length; i++) {\n var args = {\n element: this.deletedImg[i],\n src: this.deletedImg[i].getAttribute('src')\n };\n this.parent.trigger(events.afterImageDelete, args);\n }\n }\n };\n Image.prototype.checkImageBack = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === 0 &&\n !isNOU(range.startContainer.previousSibling) && range.startContainer.previousSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.previousSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNOU(range.startContainer.childNodes[range.startOffset - 1]) &&\n range.startContainer.childNodes[range.startOffset - 1].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset - 1]);\n }\n };\n Image.prototype.checkImageDel = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === range.startContainer.textContent.length &&\n !isNOU(range.startContainer.nextSibling) && range.startContainer.nextSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.nextSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNOU(range.startContainer.childNodes[range.startOffset]) &&\n range.startContainer.childNodes[range.startOffset].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset]);\n }\n };\n Image.prototype.alignmentSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Images') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectNodeEle = (selectNodeEle[0].nodeName === 'IMG') ? selectNodeEle : [this.imgEle];\n var args = { args: e, selectNode: selectNodeEle };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n switch (item.subCommand) {\n case 'JustifyLeft':\n this.alignImage(args, 'JustifyLeft');\n break;\n case 'JustifyCenter':\n this.alignImage(args, 'JustifyCenter');\n break;\n case 'JustifyRight':\n this.alignImage(args, 'JustifyRight');\n break;\n case 'Inline':\n this.inline(args);\n break;\n case 'Break':\n this.break(args);\n break;\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNodeEle[0]], 'e-img-focus');\n }\n this.cancelResizeAction();\n };\n Image.prototype.imageWithLinkQTBarItemUpdate = function () {\n var separator;\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n addClass([items[i]], 'e-link-groups');\n items[i].style.display = 'none';\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = '';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n };\n Image.prototype.showImageQuickToolbar = function (e) {\n var _this = this;\n if (e.type !== 'Images' || isNullOrUndefined(this.parent.quickToolbarModule)\n || isNullOrUndefined(this.parent.quickToolbarModule.imageQTBar) || isNullOrUndefined(e.args)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var args = e.args;\n var target = e.elements;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target = element;\n }\n });\n if (target && !closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n if (target.nodeName === 'IMG') {\n addClass([target], ['e-img-focus']);\n }\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n if (this.parent.quickToolbarModule.imageQTBar) {\n if (e.isNotify) {\n setTimeout(function () {\n _this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }, 400);\n }\n else {\n this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }\n }\n };\n Image.prototype.hideImageQuickToolbar = function () {\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-img-focus'))) {\n removeClass([this.contentModule.getEditPanel().querySelector('.e-img-focus')], 'e-img-focus');\n if (this.quickToolObj && this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n };\n Image.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideImageQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n if ((showOnRightClick && args.which === 1) && !isNullOrUndefined(args.target) &&\n args.target.tagName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), args.target);\n }\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.imageQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.imageQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'IMG' && this.parent.quickToolbarModule) {\n if (isPopupOpen) {\n return;\n }\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);\n if (isIDevice()) {\n this.parent.notify(events.selectionSave, e);\n }\n addClass([target], 'e-img-focus');\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n var separator = void 0;\n if (closest(target, 'a')) {\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n items[i].style.display = '';\n removeClass([items[i]], 'e-link-groups');\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = 'none';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n }\n else if (!closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n this.showImageQuickToolbar({ args: args, type: 'Images', elements: [args.target] });\n }\n else {\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.insertImgLink = function (e, inputDetails) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' });\n var linkUrl = this.i10n.getConstant('linkurl');\n var content = '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '
    ';\n var contentElem = parseHtml(content);\n linkWrap.appendChild(contentElem);\n var linkTarget = linkWrap.querySelector('.e-rte-linkTarget');\n var inputLink = linkWrap.querySelector('.e-img-link');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({\n label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl, change: function (e) {\n if (e.checked) {\n target_1 = '_blank';\n }\n else {\n target_1 = null;\n }\n }\n });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var target_1 = this.checkBoxObj.checked ? '_blank' : null;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var linkargs_1 = {\n args: e.args,\n selfImage: this, selection: e.selection,\n selectNode: e.selectNode, selectParent: e.selectParent, link: inputLink, target: target_1\n };\n this.dialogObj.setProperties({\n height: 'inherit',\n width: '290px',\n header: this.parent.localeObj.getConstant('imageInsertLinkHeader'),\n content: linkWrap,\n position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertlink(linkargs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-link', isPrimary: true\n }\n }]\n });\n if (!isNullOrUndefined(inputDetails)) {\n inputLink.value = inputDetails.url;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAltText = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n var altText = this.i10n.getConstant('altText');\n if (!isNullOrUndefined(this.dialogObj)) {\n var altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' });\n var altHeader = this.i10n.getConstant('alternateHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var getAlt = (e.selectNode[0].getAttribute('alt') === null) ? '' :\n e.selectNode[0].getAttribute('alt');\n var content = '
    ' +\n '' +\n '
    ';\n var contentElem = parseHtml(content);\n altWrap.appendChild(contentElem);\n var inputAlt = altWrap.querySelector('.e-img-alt');\n var altArgs_1 = {\n args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode,\n alt: inputAlt\n };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: altHeader, content: altWrap, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertAlt(altArgs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-alt', isPrimary: true\n }\n }]\n });\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAlt = function (e) {\n if (!isNullOrUndefined(e.alt)) {\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var altText = e.alt.value;\n this.parent.formatter.process(this.parent, e.args, e.args, {\n altText: altText, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n this.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.insertlink = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var url = e.link.value;\n if (url === '') {\n addClass([e.link], 'e-error');\n e.link.setSelectionRange(0, url.length);\n e.link.focus();\n return;\n }\n if (!this.isUrl(url)) {\n url = 'http://' + url;\n }\n else {\n removeClass([e.link], 'e-error');\n }\n var proxy = e.selfImage;\n if (proxy.parent.editorMode === 'HTML') {\n e.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (e.selectNode[0].parentElement.nodeName === 'A') {\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n proxy.dialogObj.hide({ returnValue: true });\n return;\n }\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand, selection: e.selection\n });\n var captionEle = closest(e.selectNode[0], '.e-img-caption');\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n proxy.dialogObj.hide({ returnValue: false });\n };\n Image.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Image.prototype.deleteImg = function (e, keyCode) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var args = {\n element: e.selectNode[0],\n src: e.selectNode[0].getAttribute('src')\n };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n e.selection.restore();\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode,\n captionClass: classes.CLS_CAPTION,\n subCommand: e.args.item.subCommand\n });\n this.imageRemovePost(args.src);\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n this.cancelResizeAction();\n if (isNullOrUndefined(keyCode)) {\n this.parent.trigger(events.afterImageDelete, args);\n }\n };\n Image.prototype.imageRemovePost = function (src) {\n var removeUrl = this.parent.insertImageSettings.removeUrl;\n if (isNOU(removeUrl) || removeUrl === '') {\n return;\n }\n var ajax = new Ajax(removeUrl, 'POST', true, null);\n var formData = new FormData();\n formData.append(name, src);\n ajax.send(formData);\n };\n Image.prototype.caption = function (e) {\n var selectNode = e.selectNode[0];\n if (selectNode.nodeName !== 'IMG') {\n return;\n }\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.cancelResizeAction();\n addClass([selectNode], 'e-rte-image');\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Caption';\n if (!isNullOrUndefined(closest(selectNode, '.' + classes.CLS_CAPTION))) {\n detach(closest(selectNode, '.' + classes.CLS_CAPTION));\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n e.selection.restore();\n }\n if (selectNode.parentElement.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode.parentElement, selectNode: e.selectNode, subCommand: subCommand });\n }\n else {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode, selectNode: e.selectNode, subCommand: subCommand });\n }\n }\n else {\n this.captionEle = this.parent.createElement('span', {\n className: classes.CLS_CAPTION + ' ' + classes.CLS_RTE_CAPTION,\n attrs: { contenteditable: 'false', draggable: 'false', style: 'width:' + this.parent.insertImageSettings.width }\n });\n var imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' });\n var imgInner = this.parent.createElement('span', { className: 'e-img-inner',\n attrs: { contenteditable: 'true' } });\n var parent_1 = e.selectNode[0].parentElement;\n if (parent_1.tagName === 'A') {\n parent_1.setAttribute('contenteditable', 'true');\n }\n imgWrap.appendChild(parent_1.tagName === 'A' ? parent_1 : e.selectNode[0]);\n imgWrap.appendChild(imgInner);\n var imgCaption = this.i10n.getConstant('imageCaption');\n imgInner.innerHTML = imgCaption;\n this.captionEle.appendChild(imgWrap);\n if (selectNode.classList.contains(classes.CLS_IMGINLINE)) {\n addClass([this.captionEle], classes.CLS_CAPINLINE);\n }\n if (selectNode.classList.contains(classes.CLS_IMGBREAK)) {\n addClass([this.captionEle], classes.CLS_IMGBREAK);\n }\n if (selectNode.classList.contains(classes.CLS_IMGLEFT)) {\n addClass([this.captionEle], classes.CLS_IMGLEFT);\n }\n if (selectNode.classList.contains(classes.CLS_IMGRIGHT)) {\n addClass([this.captionEle], classes.CLS_IMGRIGHT);\n }\n if (selectNode.classList.contains(classes.CLS_IMGCENTER)) {\n addClass([this.captionEle], classes.CLS_IMGCENTER);\n }\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: this.captionEle, selectNode: e.selectNode, subCommand: subCommand });\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), imgInner.childNodes[0], imgInner.childNodes[0], 0, imgInner.childNodes[0].textContent.length);\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNode], 'e-img-focus');\n }\n };\n Image.prototype.imageSize = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var imgSizeHeader = this.i10n.getConstant('imageSizeHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var dialogContent = this.imgsizeInput(e);\n var selectObj_1 = { args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: imgSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertSize(selectObj_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-size', isPrimary: true\n }\n }]\n });\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.break = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Break';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.inline = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Inline';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.alignImage = function (e, type) {\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : type;\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Image.prototype.imagDialog = function (e) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n var imgDialog = this.parent.createElement('div', { className: 'e-rte-img-dialog', id: this.rteID + '_image' });\n this.parent.element.appendChild(imgDialog);\n var imgInsert = this.i10n.getConstant('dialogInsert');\n var imglinkCancel = this.i10n.getConstant('dialogCancel');\n var imgHeader = this.i10n.getConstant('imageHeader');\n var selection = e.selection;\n var selectObj = { selfImage: this, selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dialogModel = {\n header: imgHeader,\n cssClass: classes.CLS_RTE_ELEMENTS,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'inherit',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertImageUrl.bind(selectObj),\n buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage', isPrimary: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel', content: imglinkCancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n if (_this.isImgUploaded) {\n _this.uploadObj.removing();\n }\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n _this.dialogRenderObj.close(event);\n _this.dialogObj = null;\n }\n };\n var dialogContent = this.parent.createElement('div', { className: 'e-img-content' });\n if ((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML') {\n dialogContent.appendChild(this.imgUpload(e));\n }\n var linkHeader = this.parent.createElement('div', { className: 'e-linkheader' });\n var linkHeaderText = this.i10n.getConstant('imageLinkHeader');\n if (this.parent.editorMode === 'HTML') {\n linkHeader.innerHTML = linkHeaderText;\n }\n else {\n linkHeader.innerHTML = this.i10n.getConstant('mdimageLink');\n }\n dialogContent.appendChild(linkHeader);\n dialogContent.appendChild(this.imageUrlPopup(e));\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {\n dialogModel.header = this.parent.localeObj.getConstant('editImageHeader');\n dialogModel.content = dialogContent;\n }\n else {\n dialogModel.content = dialogContent;\n }\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(imgDialog);\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG' && (e.name === 'insertImage')) {\n this.dialogObj.element.querySelector('.e-insertImage').textContent = this.parent.localeObj.getConstant('dialogUpdate');\n }\n imgDialog.style.maxHeight = 'inherit';\n if (this.quickToolObj) {\n if (this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Image.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n if (this.isImgUploaded) {\n this.uploadObj.removing();\n }\n };\n Image.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (target.nodeName === 'IMG') {\n this.imgEle = target;\n }\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&\n !this.parent.getToolbarElement().contains(e.target)) ||\n (this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_Image') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_Image')))) {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n if (e.target.tagName !== 'IMG' && this.imgResizeDiv && !(this.quickToolObj &&\n this.quickToolObj.imageQTBar && this.quickToolObj.imageQTBar.element.contains(e.target)) &&\n this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n if (target.tagName !== 'IMG') {\n this.removeResizeEle();\n }\n if (target.tagName !== 'IMG' && !isNOU(this.imgEle)) {\n this.imgEle.style.outline = '';\n }\n else if (!isNOU(this.prevSelectedImgEle) && this.prevSelectedImgEle !== target) {\n this.prevSelectedImgEle.style.outline = '';\n }\n }\n };\n Image.prototype.removeResizeEle = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n detach(this.contentModule.getEditPanel().querySelector('.e-img-resize'));\n };\n Image.prototype.onWindowResize = function () {\n if (!isNOU(this.contentModule) && !isNOU(this.contentModule.getEditPanel().querySelector('.e-img-resize'))) {\n this.cancelResizeAction();\n }\n };\n // eslint-disable-next-line\n Image.prototype.imageUrlPopup = function (e) {\n var imgUrl = this.parent.createElement('div', { className: 'imgUrl' });\n var placeUrl = this.i10n.getConstant('imageUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-img-url',\n attrs: { placeholder: placeUrl, spellcheck: 'false' }\n });\n imgUrl.appendChild(this.inputUrl);\n return imgUrl;\n };\n // eslint-disable-next-line\n Image.prototype.insertImageUrl = function (e) {\n var proxy = this.selfImage;\n proxy.isImgUploaded = false;\n var url = proxy.inputUrl.value;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (!isNullOrUndefined(proxy.uploadUrl) && proxy.uploadUrl.url !== '') {\n proxy.uploadUrl.cssClass = (proxy.parent.insertImageSettings.display === 'inline' ?\n classes.CLS_IMGINLINE : classes.CLS_IMGBREAK);\n proxy.dialogObj.hide({ returnValue: false });\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);\n proxy.uploadUrl.url = '';\n if (proxy.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n proxy.imgEle.style.outline = '';\n proxy.removeResizeEle();\n }\n }\n else if (url !== '') {\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(\n // eslint-disable-next-line\n this.selection.range.startContainer.parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var regex = /[\\w-]+.(jpg|png|jpeg|gif)/g;\n var matchUrl = (!isNullOrUndefined(url.match(regex)) && proxy.parent.editorMode === 'HTML') ? url.match(regex)[0] : '';\n var value = {\n cssClass: (proxy.parent.insertImageSettings.display === 'inline' ? classes.CLS_IMGINLINE : classes.CLS_IMGBREAK),\n url: url, selection: this.selection, altText: matchUrl,\n selectParent: this.selectParent, width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);\n proxy.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.imgsizeInput = function (e) {\n var selectNode = e.selectNode[0];\n var imgHeight = this.i10n.getConstant('imageHeight');\n var imgWidth = this.i10n.getConstant('imageWidth');\n var imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' });\n var widthVal = (selectNode.getAttribute('width') === 'auto' ||\n isNullOrUndefined(selectNode.getAttribute('width'))) ? selectNode.width : selectNode.getClientRects()[0].width;\n var heightVal = (selectNode.getAttribute('height') === 'auto' ||\n isNullOrUndefined(selectNode.getAttribute('height'))) ? selectNode.height : selectNode.getClientRects()[0].height;\n var content = '
    ' +\n '
    ' + '
    ' +\n '
    ';\n var contentElem = parseHtml(content);\n imgSizeWrap.appendChild(contentElem);\n var widthNum = new NumericTextBox({\n format: '###.### px', min: this.parent.insertImageSettings.minWidth,\n max: this.parent.getInsertImgMaxWidth(),\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n widthNum.isStringTemplate = true;\n widthNum.createElement = this.parent.createElement;\n widthNum.appendTo(imgSizeWrap.querySelector('#imgwidth'));\n var heightNum = new NumericTextBox({\n format: '###.### px', min: this.parent.insertImageSettings.minHeight,\n max: this.parent.insertImageSettings.maxHeight,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n heightNum.isStringTemplate = true;\n heightNum.createElement = this.parent.createElement;\n heightNum.appendTo(imgSizeWrap.querySelector('#imgheight'));\n return imgSizeWrap;\n };\n Image.prototype.insertSize = function (e) {\n e.selection.restore();\n var proxy = e.selfImage;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var dialogEle = proxy.dialogObj.element;\n var width = parseFloat(dialogEle.querySelector('.e-img-width').value);\n var height = parseFloat(dialogEle.parentElement.querySelector('.e-img-height').value);\n proxy.parent.formatter.process(this.parent, e.args, e.args, {\n width: width, height: height, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n if (this.imgResizeDiv) {\n proxy.imgResizePos(e.selectNode[0], this.imgResizeDiv);\n }\n proxy.dialogObj.hide({ returnValue: true });\n };\n Image.prototype.insertImage = function (e) {\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.element.style.maxHeight = 'inherit';\n var dialogContent = this.dialogObj.element.querySelector('.e-img-content');\n if (((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML')) {\n document.getElementById(this.rteID + '_insertImage').focus();\n }\n else {\n dialogContent.querySelector('.e-img-url').focus();\n }\n }\n };\n Image.prototype.imgUpload = function (e) {\n var _this = this;\n var save;\n var selectParent;\n // eslint-disable-next-line\n var proxy = this;\n var iframe = proxy.parent.iframeSettings.enable;\n if (proxy.parent.editorMode === 'HTML' && (!iframe && isNullOrUndefined(closest(e.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + this.parent.contentModule.getPanel().id + \"'\" + ']'))\n || (iframe && !hasClass(e.selection.range.startContainer.parentNode.ownerDocument.querySelector('body'), 'e-lib')))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = e.selection;\n selectParent = e.selectParent;\n }\n var uploadParentEle = this.parent.createElement('div', { className: 'e-img-uploadwrap e-droparea' });\n var deviceImgUpMsg = this.i10n.getConstant('imageDeviceUploadMessage');\n var imgUpMsg = this.i10n.getConstant('imageUploadMessage');\n var span = this.parent.createElement('span', { className: 'e-droptext' });\n var spanMsg = this.parent.createElement('span', {\n className: 'e-rte-upload-text', innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)\n });\n span.appendChild(spanMsg);\n var btnEle = this.parent.createElement('button', {\n className: 'e-browsebtn', id: this.rteID + '_insertImage', attrs: { autofocus: 'true', type: 'button' }\n });\n span.appendChild(btnEle);\n uploadParentEle.appendChild(span);\n var browserMsg = this.i10n.getConstant('browse');\n var button = new Button({ content: browserMsg, enableRtl: this.parent.enableRtl });\n button.isStringTemplate = true;\n button.createElement = this.parent.createElement;\n button.appendTo(btnEle);\n var btnClick = (Browser.isDevice) ? span : btnEle;\n EventHandler.add(btnClick, 'click', this.fileSelect, this);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n uploadParentEle.appendChild(uploadEle);\n var altText;\n var rawFile;\n var selectArgs;\n var filesData;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: { saveUrl: this.parent.insertImageSettings.saveUrl, removeUrl: this.parent.insertImageSettings.removeUrl },\n dropArea: span, multiple: false, enableRtl: this.parent.enableRtl,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n selected: function (e) {\n proxy.isImgUploaded = true;\n selectArgs = e;\n filesData = e.filesData;\n if (_this.parent.isServerRendered) {\n selectArgs = JSON.parse(JSON.stringify(e));\n e.cancel = true;\n rawFile = e.filesData;\n selectArgs.filesData = rawFile;\n }\n _this.parent.trigger(events.imageSelected, selectArgs, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.checkExtension(selectArgs.filesData[0]);\n altText = selectArgs.filesData[0].name;\n if (_this.parent.editorMode === 'HTML' && isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var reader_1 = new FileReader();\n // eslint-disable-next-line\n reader_1.addEventListener('load', function (e) {\n var url = _this.parent.insertImageSettings.saveFormat === 'Base64' ? reader_1.result :\n URL.createObjectURL(convertToBlob(reader_1.result));\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText,\n selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height,\n minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n });\n reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);\n }\n if (_this.parent.isServerRendered) {\n /* eslint-disable */\n _this.uploadObj._internalRenderSelect(selectArgs, rawFile);\n /* eslint-enable */\n }\n }\n });\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = filesData;\n args.cancel = true;\n _this.parent.trigger(events.imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(events.beforeImageUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(events.imageUploading, e);\n }\n },\n success: function (e) {\n _this.parent.trigger(events.imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n // eslint-disable-next-line\n var value = { url: url, selection: save };\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText, selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n }\n });\n },\n failure: function (e) {\n _this.parent.trigger(events.imageUploadFailed, e);\n },\n removing: function () {\n // eslint-disable-next-line\n _this.parent.trigger(events.imageRemoving, e, function (e) {\n proxy.isImgUploaded = false;\n proxy.inputUrl.removeAttribute('disabled');\n if (proxy.uploadUrl) {\n proxy.uploadUrl.url = '';\n }\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n });\n }\n });\n this.uploadObj.isStringTemplate = true;\n this.uploadObj.createElement = this.parent.createElement;\n this.uploadObj.appendTo(uploadEle);\n return uploadParentEle;\n };\n Image.prototype.checkExtension = function (e) {\n if (this.uploadObj.allowedExtensions) {\n if (this.uploadObj.allowedExtensions.toLocaleLowerCase().indexOf(('.' + e.type).toLocaleLowerCase()) === -1) {\n this.dialogObj.getButtons(0).element.setAttribute('disabled', 'disabled');\n }\n else {\n this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n };\n Image.prototype.fileSelect = function () {\n this.dialogObj.element.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\n return false;\n };\n Image.prototype.dragStart = function (e) {\n if (e.target.nodeName === 'IMG') {\n this.parent.trigger(events.actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n e.dataTransfer.effectAllowed = 'copyMove';\n e.target.classList.add(classes.CLS_RTE_DRAG_IMAGE);\n }\n });\n }\n else {\n return true;\n }\n };\n Image.prototype.dragEnter = function (e) {\n e.dataTransfer.dropEffect = 'copy';\n e.preventDefault();\n };\n Image.prototype.dragOver = function (e) {\n if ((Browser.info.name === 'edge' && e.dataTransfer.items[0].type.split('/')[0].indexOf('image') > -1) ||\n (Browser.isIE && e.dataTransfer.types[0] === 'Files')) {\n e.preventDefault();\n }\n else {\n return true;\n }\n };\n /**\n * Used to set range When drop an image\n *\n * @param {ImageDropEventArgs} args - specifies the image arguments.\n * @returns {void}\n */\n Image.prototype.dragDrop = function (args) {\n var _this = this;\n this.parent.trigger(events.beforeImageDrop, args, function (e) {\n var imgElement = _this.parent.inputElement.ownerDocument.querySelector('.' + classes.CLS_RTE_DRAG_IMAGE);\n var isImgOrFileDrop = (imgElement && imgElement.tagName === 'IMG') || e.dataTransfer.files.length > 0;\n if (!e.cancel && isImgOrFileDrop) {\n _this.parent.trigger(events.actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n if (closest(e.target, '#' + _this.parent.getID() + '_toolbar') ||\n _this.parent.inputElement.contentEditable === 'false') {\n e.preventDefault();\n return;\n }\n if (_this.parent.element.querySelector('.' + classes.CLS_IMG_RESIZE)) {\n detach(_this.imgResizeDiv);\n }\n e.preventDefault();\n var range = void 0;\n if (_this.contentModule.getDocument().caretRangeFromPoint) { //For chrome\n range = _this.contentModule.getDocument().caretRangeFromPoint(e.clientX, e.clientY);\n }\n else if ((e.rangeParent)) { //For mozilla firefox\n range = _this.contentModule.getDocument().createRange();\n range.setStart(e.rangeParent, e.rangeOffset);\n }\n else {\n range = _this.getDropRange(e.clientX, e.clientY); //For internet explorer\n }\n _this.parent.notify(events.selectRange, { range: range });\n var uploadArea = _this.parent.element.querySelector('.' + classes.CLS_DROPAREA);\n if (uploadArea) {\n return;\n }\n _this.insertDragImage(e);\n }\n });\n }\n else {\n if (isImgOrFileDrop) {\n e.preventDefault();\n }\n }\n });\n };\n /**\n * Used to calculate range on internet explorer\n *\n * @param {number} x - specifies the x range.\n * @param {number} y - specifies the y range.\n * @returns {void}\n */\n Image.prototype.getDropRange = function (x, y) {\n var startRange = this.contentModule.getDocument().createRange();\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), startRange);\n var elem = this.contentModule.getDocument().elementFromPoint(x, y);\n var startNode = (elem.childNodes.length > 0 ? elem.childNodes[0] : elem);\n var startCharIndexCharacter = 0;\n if (this.parent.inputElement.firstChild.innerHTML === '
    ') {\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter);\n }\n else {\n var rangeRect = void 0;\n do {\n startCharIndexCharacter++;\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter + 1);\n rangeRect = startRange.getBoundingClientRect();\n } while (rangeRect.left < x && startCharIndexCharacter < startNode.length - 1);\n }\n return startRange;\n };\n Image.prototype.insertDragImage = function (e) {\n var _this = this;\n e.preventDefault();\n var activePopupElement = this.parent.element.querySelector('' + classes.CLS_POPUP_OPEN);\n this.parent.notify(events.drop, { args: e });\n if (activePopupElement) {\n activePopupElement.classList.add(classes.CLS_HIDE);\n }\n if (e.dataTransfer.files.length > 0) { //For external image drag and drop\n if (e.dataTransfer.files.length > 1) {\n return;\n }\n var imgFiles = e.dataTransfer.files;\n var fileName = imgFiles[0].name;\n var imgType = fileName.substring(fileName.lastIndexOf('.'));\n var allowedTypes = this.parent.insertImageSettings.allowedTypes;\n for (var i = 0; i < allowedTypes.length; i++) {\n if (imgType.toLocaleLowerCase() === allowedTypes[i].toLowerCase()) {\n if (this.parent.insertImageSettings.saveUrl) {\n this.onSelect(e);\n }\n else {\n var args = { args: e, text: '', file: imgFiles[0] };\n e.preventDefault();\n this.imagePaste(args);\n }\n }\n }\n }\n else { //For internal image drag and drop\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var imgElement = this.parent.inputElement.ownerDocument.querySelector('.' + classes.CLS_RTE_DRAG_IMAGE);\n if (imgElement && imgElement.tagName === 'IMG') {\n if (imgElement.nextElementSibling) {\n if (imgElement.nextElementSibling.classList.contains(classes.CLS_IMG_INNER)) {\n range.insertNode(imgElement.parentElement.parentElement);\n }\n else {\n range.insertNode(imgElement);\n }\n }\n else {\n range.insertNode(imgElement);\n }\n imgElement.classList.remove(classes.CLS_RTE_DRAG_IMAGE);\n var imgArgs_1 = { elements: [imgElement] };\n imgElement.addEventListener('load', function () {\n _this.parent.trigger(events.actionComplete, imgArgs_1);\n });\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n var args = e;\n this.resizeStart(args, imgElement);\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.onSelect = function (args) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var parentElement = this.parent.createElement('ul', { className: classes.CLS_UPLOAD_FILES });\n this.parent.element.appendChild(parentElement);\n var validFiles = {\n name: '',\n size: 0,\n status: '',\n statusCode: '',\n type: '',\n rawFile: args.dataTransfer.files[0],\n validationMessages: {}\n };\n var imageTag = this.parent.createElement('IMG');\n imageTag.style.opacity = '0.5';\n imageTag.classList.add(classes.CLS_RTE_IMAGE);\n imageTag.classList.add(classes.CLS_IMGINLINE);\n imageTag.classList.add(classes.CLS_RESIZE);\n var file = validFiles.rawFile;\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n var url = URL.createObjectURL(convertToBlob(reader.result));\n imageTag.src = proxy.parent.insertImageSettings.saveFormat === 'Blob' ? url : reader.result;\n });\n if (file) {\n reader.readAsDataURL(file);\n }\n range.insertNode(imageTag);\n this.uploadMethod(args, imageTag);\n var e = { elements: [imageTag] };\n imageTag.addEventListener('load', function () {\n _this.parent.trigger(events.actionComplete, e);\n });\n };\n /**\n * Rendering uploader and popup for drag and drop\n *\n * @param {DragEvent} dragEvent - specifies the event.\n * @param {HTMLImageElement} imageElement - specifies the element.\n * @returns {void}\n */\n Image.prototype.uploadMethod = function (dragEvent, imageElement) {\n var _this = this;\n var isUploading = false;\n // eslint-disable-next-line\n var proxy = this;\n var popupEle = this.parent.createElement('div');\n this.parent.element.appendChild(popupEle);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n var offsetY = this.parent.iframeSettings.enable ? -50 : -90;\n this.popupObj = new Popup(popupEle, {\n relateTo: imageElement,\n height: '85px',\n width: '300px',\n offsetY: offsetY,\n content: uploadEle,\n viewPortElement: this.parent.element,\n position: { X: 'center', Y: 'top' },\n enableRtl: this.parent.enableRtl,\n zIndex: 10001,\n // eslint-disable-next-line\n close: function (event) {\n _this.parent.isBlur = false;\n _this.popupObj.destroy();\n detach(_this.popupObj.element);\n _this.popupObj = null;\n }\n });\n this.popupObj.element.style.display = 'none';\n addClass([this.popupObj.element], classes.CLS_POPUP_OPEN);\n addClass([this.popupObj.element], classes.CLS_RTE_UPLOAD_POPUP);\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var timeOut = dragEvent.dataTransfer.files[0].size > 1000000 ? 300 : 100;\n setTimeout(function () {\n proxy.refreshPopup(imageElement);\n }, timeOut);\n var rawFile;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: {\n saveUrl: this.parent.insertImageSettings.saveUrl,\n removeUrl: this.parent.insertImageSettings.removeUrl\n },\n cssClass: classes.CLS_RTE_DIALOG_UPLOAD,\n dropArea: this.parent.element,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n removing: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n },\n canceling: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = rawFile;\n isUploading = true;\n args.cancel = true;\n _this.parent.trigger(events.imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n _this.parent.inputElement.contentEditable = 'false';\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(events.beforeImageUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n isUploading = true;\n _this.parent.trigger(events.imageUploading, e, function (imageUploadingArgs) {\n if (imageUploadingArgs.cancel) {\n if (!isNullOrUndefined(imageElement)) {\n detach(imageElement);\n }\n if (!isNullOrUndefined(_this.popupObj.element)) {\n detach(_this.popupObj.element);\n }\n }\n else {\n _this.parent.inputElement.contentEditable = 'false';\n }\n });\n }\n },\n selected: function (e) {\n if (isUploading) {\n e.cancel = true;\n }\n if (_this.parent.isServerRendered) {\n rawFile = e.filesData;\n }\n },\n failure: function (e) {\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadFailure(imageElement, args, e);\n }, 900);\n },\n success: function (e) {\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadSuccess(imageElement, dragEvent, args, e);\n }, 900);\n }\n });\n this.uploadObj.appendTo(this.popupObj.element.childNodes[0]);\n this.popupObj.element.querySelector('.e-rte-dialog-upload .e-file-select-wrap').style.display = 'none';\n range.selectNodeContents(imageElement);\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), range);\n };\n Image.prototype.refreshPopup = function (imageElement) {\n var imgPosition = this.parent.iframeSettings.enable ? this.parent.element.offsetTop +\n imageElement.offsetTop : imageElement.offsetTop;\n var rtePosition = this.parent.element.offsetTop + this.parent.element.offsetHeight;\n if (imgPosition > rtePosition) {\n this.popupObj.relateTo = this.parent.inputElement;\n this.popupObj.offsetY = this.parent.iframeSettings.enable ? -30 : -65;\n this.popupObj.element.style.display = 'block';\n }\n else {\n if (this.popupObj) {\n this.popupObj.refreshPosition(imageElement);\n this.popupObj.element.style.display = 'block';\n }\n }\n };\n /**\n * Called when drop image upload was failed\n *\n * @param {HTMLElement} imgEle - specifies the image element.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {Object} e - specfies the object.\n * @returns {void}\n */\n Image.prototype.uploadFailure = function (imgEle, args, e) {\n detach(imgEle);\n if (this.popupObj) {\n this.popupObj.close();\n }\n this.parent.trigger(events.imageUploadFailed, e);\n this.uploadObj.destroy();\n };\n /**\n * Called when drop image upload was successful\n *\n * @param {HTMLElement} imageElement - specifies the image element.\n * @param {DragEvent} dragEvent - specifies the drag event.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {ImageSuccessEventArgs} e - specifies the success event.\n * @returns {void}\n */\n Image.prototype.uploadSuccess = function (imageElement, dragEvent, args, e) {\n var _this = this;\n imageElement.style.opacity = '1';\n imageElement.classList.add(classes.CLS_IMG_FOCUS);\n e.element = imageElement;\n this.parent.trigger(events.imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n imageElement.src = url;\n imageElement.setAttribute('alt', e.file.name);\n }\n });\n if (this.popupObj) {\n this.popupObj.close();\n this.uploadObj.destroy();\n }\n this.showImageQuickToolbar(args);\n this.resizeStart(dragEvent, imageElement);\n };\n Image.prototype.imagePaste = function (args) {\n var _this = this;\n if (args.text.length === 0 && !isNullOrUndefined(args.file)) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var reader_2 = new FileReader();\n args.args.preventDefault();\n // eslint-disable-next-line\n reader_2.addEventListener('load', function (e) {\n var url = {\n cssClass: (proxy_1.parent.insertImageSettings.display === 'inline' ? classes.CLS_IMGINLINE : classes.CLS_IMGBREAK),\n url: _this.parent.insertImageSettings.saveFormat === 'Base64' || !isNullOrUndefined(args.callBack) ?\n reader_2.result : URL.createObjectURL(convertToBlob(reader_2.result)),\n width: {\n width: proxy_1.parent.insertImageSettings.width, minWidth: proxy_1.parent.insertImageSettings.minWidth,\n maxWidth: proxy_1.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy_1.parent.insertImageSettings.height, minHeight: proxy_1.parent.insertImageSettings.minHeight,\n maxHeight: proxy_1.parent.insertImageSettings.maxHeight\n }\n };\n if (!isNullOrUndefined(args.callBack)) {\n args.callBack(url);\n return;\n }\n else {\n proxy_1.parent.formatter.process(proxy_1.parent, { item: { command: 'Images', subCommand: 'Image' } }, args.args, url);\n _this.showPopupToolBar(args, url);\n }\n });\n reader_2.readAsDataURL(args.file);\n }\n };\n Image.prototype.showPopupToolBar = function (e, url) {\n var _this = this;\n var imageSrc = 'img[src=\"' + url.url + '\"]';\n var imageElement = this.parent.inputElement.querySelector(imageSrc);\n this.parent.quickToolbarModule.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n var args = {\n args: e.args,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n if (imageElement) {\n setTimeout(function () {\n _this.showImageQuickToolbar(args);\n _this.resizeStart(e.args, imageElement);\n }, 0);\n }\n };\n /* eslint-disable */\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Image.prototype.destroy = function () {\n this.prevSelectedImgEle = undefined;\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Image.prototype.getModuleName = function () {\n return 'image';\n };\n return Image;\n}());\nexport { Image };\n","import { EventHandler, detach, isNullOrUndefined, select, isBlazor, extend } from '@syncfusion/ej2-base';\nimport { closest, addClass, removeClass, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_RTE_ELEMENTS } from '../base/classes';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { RenderType } from '../base/enum';\nimport { dispatchEvent, parseHtml } from '../base/util';\nimport { isIDevice } from '../../common/util';\n/**\n * `Link` module is used to handle undo actions.\n */\nvar Link = /** @class */ (function () {\n function Link(parent, serviceLocator) {\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.addEventListener();\n this.serviceLocator = serviceLocator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n }\n Link.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.insertLink, this.linkDialog, this);\n this.parent.on(events.showLinkDialog, this.showDialog, this);\n this.parent.on(events.closeLinkDialog, this.closeDialog, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.insertCompleted, this.showLinkQuickToolbar, this);\n this.parent.on(events.clearDialogObj, this.clearDialogObj, this);\n this.parent.on(events.linkToolbarAction, this.onToolbarAction, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.unLink, this.removeLink, this);\n this.parent.on(events.editLink, this.editLink, this);\n this.parent.on(events.openLink, this.openLink, this);\n this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n Link.prototype.onToolbarAction = function (args) {\n var item = args.args.item;\n switch (item.subCommand) {\n case 'OpenLink':\n this.parent.notify(events.openLink, args);\n break;\n case 'EditLink':\n this.parent.notify(events.editLink, args);\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, args);\n break;\n }\n };\n Link.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.insertLink, this.linkDialog);\n this.parent.off(events.showLinkDialog, this.showDialog);\n this.parent.off(events.closeLinkDialog, this.closeDialog);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.insertCompleted, this.showLinkQuickToolbar);\n this.parent.off(events.clearDialogObj, this.clearDialogObj);\n this.parent.off(events.linkToolbarAction, this.onToolbarAction);\n this.parent.off(events.unLink, this.removeLink);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.editLink, this.editLink);\n this.parent.off(events.openLink, this.openLink);\n this.parent.off(events.editAreaClick, this.editAreaClickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Link.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.showLinkQuickToolbar = function (e) {\n if (!isNullOrUndefined(e.args) && e.args.action !== 'enter' &&\n e.args.action !== 'space') {\n var pageX = void 0;\n var pageY = void 0;\n if (e.type !== 'Links' || isNullOrUndefined(this.parent.quickToolbarModule) ||\n isNullOrUndefined(this.parent.quickToolbarModule.linkQTBar)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var parentTop = this.parent.element.getBoundingClientRect().top;\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var target_1;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target_1 = ((element.nodeName === '#text') ? (element.parentNode) : element);\n }\n });\n if (e.isNotify) {\n var tbElement = this.parent.toolbarModule.getToolbarElement();\n var linkTop = target_1.getBoundingClientRect().top;\n var linkLeft = target_1.getBoundingClientRect().left;\n var linkPos = linkTop - parentTop;\n var tbHeight = (tbElement) ? (tbElement.offsetHeight + this.parent.toolbarModule.getExpandTBarPopHeight()) : 0;\n pageX = (this.parent.iframeSettings.enable) ? parentLeft + linkLeft : target_1.getBoundingClientRect().left;\n pageY = window.pageYOffset + ((this.parent.iframeSettings.enable) ?\n (parentTop + tbHeight + linkTop) : (parentTop + linkPos));\n }\n else {\n var args = void 0;\n args = e.args.touches ? e.args.changedTouches[0] : args = e.args;\n pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + parentTop + args.clientY : args.pageY;\n }\n if (this.quickToolObj.linkQTBar) {\n this.quickToolObj.linkQTBar.showPopup(pageX, pageY, range.endContainer);\n }\n }\n };\n Link.prototype.hideLinkQuickToolbar = function () {\n if (this.quickToolObj && this.quickToolObj.linkQTBar && document.body.contains(this.quickToolObj.linkQTBar.element)) {\n this.quickToolObj.linkQTBar.hidePopup();\n }\n };\n Link.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideLinkQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.linkQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n target = this.getAnchorNode(target);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.linkQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'A' && (target.childNodes.length > 0 && target.childNodes[0].nodeName !== 'IMG') &&\n e.args.target.nodeName !== 'IMG') {\n if (isPopupOpen) {\n return;\n }\n this.showLinkQuickToolbar({\n args: args,\n isNotify: false,\n type: 'Links',\n elements: [args.target]\n });\n }\n else {\n this.hideLinkQuickToolbar();\n }\n }\n };\n Link.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'insert-link':\n this.openDialog(true, event);\n originalEvent.preventDefault();\n break;\n }\n };\n Link.prototype.openDialog = function (isInternal, event) {\n if (!isInternal) {\n this.parent.contentModule.getEditPanel().focus();\n }\n if (this.parent.editorMode === 'HTML') {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n var selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var eventArgs = {\n args: event ? event.args : {\n item: { command: 'Links', subCommand: 'CreateLink' },\n originalEvent: undefined\n },\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n };\n this.linkDialog(eventArgs);\n }\n else {\n var textArea = this.parent.contentModule.getEditPanel();\n this.parent.formatter.editorManager.markdownSelection.save(textArea.selectionStart, textArea.selectionEnd);\n this.linkDialog({\n args: {\n item: { command: 'Links', subCommand: 'Link' },\n originalEvent: event && event.args\n },\n member: 'link',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertLink'\n });\n }\n };\n Link.prototype.showDialog = function () {\n this.openDialog(false);\n };\n Link.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Link.prototype.linkDialog = function (e, inputDetails) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n if (this.parent.editorMode === 'HTML' && (e.selectParent.length > 0 &&\n !isNullOrUndefined(e.selectParent[0].classList) &&\n e.selectParent[0].classList.contains('e-rte-anchor')) && isNullOrUndefined(inputDetails)) {\n this.editLink(e);\n return;\n }\n var linkWebAddress = this.i10n.getConstant('linkWebUrl');\n var linkDisplayText = this.i10n.getConstant('linkText');\n var linkTooltip = this.i10n.getConstant('linkTooltipLabel');\n var urlPlace = this.i10n.getConstant('linkurl');\n var textPlace = this.i10n.getConstant('textPlaceholder');\n var title = this.i10n.getConstant('linkTitle');\n var linkDialogEle = this.parent.createElement('div', {\n className: 'e-rte-link-dialog', id: this.rteID + '_rtelink'\n });\n this.parent.element.appendChild(linkDialogEle);\n var linkContent = this.parent.createElement('div', {\n className: 'e-rte-linkcontent', id: this.rteID + '_linkContent'\n });\n var htmlTextbox = (this.parent.editorMode === 'HTML') ? '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '
    ' : '';\n var content = '
    ' + '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '' +\n '
    ' + htmlTextbox;\n var contentElem = parseHtml(content);\n linkContent.appendChild(contentElem);\n var linkTarget = linkContent.querySelector('.e-rte-linkTarget');\n var linkUrl = linkContent.querySelector('.e-rte-linkurl');\n var linkText = linkContent.querySelector('.e-rte-linkText');\n var linkTitle = linkContent.querySelector('.e-rte-linkTitle');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({ label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var selectText = (this.parent.editorMode === 'HTML') ?\n e.selection.getRange(this.parent.contentModule.getDocument()).toString() : e.text;\n var linkInsert = this.i10n.getConstant('dialogInsert');\n var linkCancel = this.i10n.getConstant('dialogCancel');\n var selection = e.selection;\n var selectObj = { selfLink: this, selection: e.selection, selectParent: e.selectParent, args: e.args };\n var dialogModel = {\n header: this.i10n.getConstant('linkHeader'),\n content: linkContent,\n cssClass: CLS_RTE_ELEMENTS,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px', height: 'inherit',\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertlink.bind(selectObj),\n buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink', isPrimary: true }\n },\n { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat', content: linkCancel } }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n var args = isBlazor() ? null : _this.dialogObj;\n _this.dialogRenderObj.close(args);\n _this.dialogObj = null;\n }\n };\n // eslint-disable-next-line\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(linkDialogEle);\n linkDialogEle.style.maxHeight = 'inherit';\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (!isNullOrUndefined(inputDetails)) {\n linkUrl.value = inputDetails.url;\n linkText.value = inputDetails.text;\n linkTitle.value = inputDetails.title;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n this.dialogObj.element.querySelector('.e-insertLink').textContent = inputDetails.btnText;\n }\n this.checkUrl(false);\n if ((this.parent.editorMode === 'HTML' && isNullOrUndefined(inputDetails) && ((!isNullOrUndefined(selectText)\n && selectText !== '') && (e.selection.range.startOffset === 0) || e.selection.range.startOffset !==\n e.selection.range.endOffset)) || e.module === 'Markdown') {\n linkText.value = selectText;\n }\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n if (this.quickToolObj) {\n this.hideLinkQuickToolbar();\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Link.prototype.insertlink = function (e) {\n var linkEle = this.selfLink.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl').value;\n var linkText = linkEle.querySelector('.e-rte-linkText').value;\n var linkTitle;\n if (this.selfLink.parent.editorMode === 'HTML') {\n linkTitle = linkEle.querySelector('.e-rte-linkTitle').value;\n }\n var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;\n if (linkUrl === '') {\n this.selfLink.checkUrl(true);\n return;\n }\n if (!this.selfLink.isUrl(linkUrl)) {\n linkText = (linkText === '') ? linkUrl : linkText;\n if (!this.selfLink.parent.enableAutoUrl) {\n linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;\n }\n else {\n // eslint-disable-next-line\n linkUrl = linkUrl;\n }\n }\n else {\n this.selfLink.checkUrl(false);\n }\n var proxy = this.selfLink;\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(this.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + proxy.parent.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.parent.contentModule.getEditPanel().focus();\n if (Browser.isIE && proxy.parent.iframeSettings.enable) {\n this.selection.restore();\n }\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.parent.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var value = {\n url: linkUrl, text: linkText, title: linkTitle, target: target,\n selection: this.selection, selectParent: this.selectParent\n };\n if (document.body.contains(proxy.dialogObj.element)) {\n this.selfLink.dialogObj.hide({ returnValue: false });\n }\n if (isIDevice() && proxy.parent.iframeSettings.enable) {\n select('iframe', proxy.parent.element).contentWindow.focus();\n }\n if (proxy.parent.editorMode === 'HTML') {\n this.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var argsValue;\n if (this.args.code === 'KeyK') {\n var originalEvent = this.args;\n extend(this.args, { item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent }, true);\n var argsVal = {\n item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent\n };\n argsValue = argsVal;\n }\n else {\n argsValue = this.args;\n }\n this.selfLink.parent.formatter.process(this.selfLink.parent, argsValue, (!isNullOrUndefined(this.args) && this.args.originalEvent), value);\n this.selfLink.parent.contentModule.getEditPanel().focus();\n };\n Link.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Link.prototype.checkUrl = function (e) {\n var linkEle = this.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl');\n if (e) {\n addClass([linkUrl], 'e-error');\n linkUrl.setSelectionRange(0, linkUrl.value.length);\n linkUrl.focus();\n }\n else {\n removeClass([linkUrl], 'e-error');\n }\n };\n Link.prototype.removeLink = function (e) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,\n subCommand: e.args.item.subCommand\n });\n if (isIDevice() && this.parent.iframeSettings.enable) {\n select('iframe', this.parent.element).contentWindow.focus();\n }\n else {\n this.parent.contentModule.getEditPanel().focus();\n }\n this.hideLinkQuickToolbar();\n };\n Link.prototype.openLink = function (e) {\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: selectParentEle.href,\n target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n }\n };\n Link.prototype.getAnchorNode = function (element) {\n var selectParent = closest(element, 'a');\n return (selectParent ? selectParent : element);\n };\n Link.prototype.editLink = function (e) {\n var selectedNode = this.getAnchorNode(e.selectNode[0]);\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n selectParentEle = selectedNode.nodeName === 'A' ? selectedNode : selectParentEle;\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.getAttribute('href'), text: selectParentEle.innerText,\n title: selectParentEle.title, target: selectParentEle.target,\n header: this.i10n.getConstant('editLink'), btnText: linkUpdate\n };\n this.linkDialog(e, inputDetails);\n }\n };\n // eslint-disable-next-line\n Link.prototype.cancelDialog = function (e) {\n this.selfLink.parent.isBlur = false;\n this.selfLink.dialogObj.hide({ returnValue: true });\n if (isIDevice()) {\n this.selection.restore();\n }\n else {\n this.selfLink.parent.contentModule.getEditPanel().focus();\n }\n };\n Link.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable &&\n this.parent.getToolbarElement() && !this.parent.getToolbarElement().contains(e.target)) ||\n (((this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target)) ||\n this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {\n this.dialogObj.hide({ returnValue: true });\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Link.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Link.prototype.getModuleName = function () {\n return 'link';\n };\n return Link;\n}());\nexport { Link };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/**\n * Chart legend\n */\nimport { remove, Browser, extend } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\n/**\n * `Legend` module is used to render legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var colors = [];\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl, series.marker.shape, series.marker.visible));\n }\n }\n else if (this.legend.mode === 'Point') {\n var _loop_1 = function (points) {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n if (this_1.legendCollections.filter(function (i) { return i.text === points.x.toString(); }).length === 0) {\n this_1.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this_1.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, '', series.marker.shape, series.marker.visible));\n }\n };\n var this_1 = this;\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n _loop_1(points);\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n };\n /** @private */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var render = false;\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle);\n if (legendOption.render) {\n render = true;\n legendWidth = shapeWidth + shapePadding + legendOption.textSize.width + padding;\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n }\n }\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (this.isVertical) {\n // eslint-disable-next-line no-self-assign\n columnHeight = columnHeight;\n }\n else {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /** @private */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n var previousBound = (prevLegend.location.x + textPadding + prevLegend.textSize.width);\n if ((previousBound + (legendOption.textSize.width + textPadding)) > (rect.x + rect.width + this.legend.shapeWidth / 2) ||\n this.isVertical) {\n legendOption.location.x = start.x;\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + padding;\n }\n else {\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n legendOption.location.y = prevLegend.location.y;\n }\n var availwidth = (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.legend.shapeWidth / 2);\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle);\n };\n /** @private */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[index];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n series.chart[changeDetection] = true;\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event);\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event);\n }\n series.chart[changeDetection] = false;\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n chart.markerRender.removeHighlightedMarker();\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (chart.highlightModule && chart.highlightMode !== 'None') {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series.position = undefined;\n }\n };\n /**\n * To show the tooltip for the trimmed text in legend.\n *\n * @returns {void}\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) * _this.translatePage(null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * To check click position is within legend bounds\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pagedown calculations are performing here\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n return null;\n }\n };\n /**\n * Get module name\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { ChartLocation, RectOption, isCollide, isOverlap } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, getRotatedRectangleCoordinates, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * `DataLabel` module is used to render data label for the data point.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea' || series.type === 'SplineRangeArea';\n };\n /**\n * Render the data label for series.\n *\n * @returns {void}\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n var rect;\n var labelLocation = { x: 0, y: 0 };\n var rgbValue;\n var contrast;\n var argsData;\n var border;\n var textSize;\n var angle;\n var degree;\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isInversed;\n var redraw = chart.redraw;\n var isDataLabelOverlap = false;\n var coordinatesAfterRotation = [];\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n var point;\n var rectCenterX;\n var rectCenterY;\n // Data label point iteration started\n for (var i = 0; i < visiblePoints.length; i++) {\n point = visiblePoints[i];\n if (!dataLabel.showZero && ((point.y !== 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength = void 0;\n var xPos = void 0;\n var yPos = void 0;\n var xValue = void 0;\n var yValue = void 0;\n var isRender = true;\n var clip = series.clipRect;\n var shapeRect = void 0;\n isDataLabelOverlap = false;\n angle = degree = dataLabel.angle;\n border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = getLabelText(point, series, chart);\n labelLength = labelText.length;\n for (var i_1 = 0; i_1 < labelLength; i_1++) {\n argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i_1], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i_1], dataLabel.font)\n };\n chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i_1, redraw);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font);\n rect = this.calculateTextPosition(point, series, textSize, dataLabel, i_1);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n coordinatesAfterRotation = getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle);\n isDataLabelOverlap = this.isDataLabelOverlapWithChartBound(coordinatesAfterRotation, chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(coordinatesAfterRotation);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i_1, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\n contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n }\n textElement(chart.renderer, new TextOption(this.commonId + point.index + '_Text_' + i_1, xPos, yPos, 'middle', argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color ||\n ((contrast >= 128 || series.type === 'Hilo') ? 'black' : 'white'), series.textElement, false, redraw, true, false, series.chart.duration, series.clipRect, null, null, chart.enableCanvas);\n }\n }\n }\n }\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, \n // eslint-disable-next-line @typescript-eslint/indent\n false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n /**\n * Get rect coordinates\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Render the data label template.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var rgbValue = convertHexToColor(colorNameToHex(this.fontBackground));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color ||\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white');\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.y = (dataLabel.position === 'Auto') ? location.y :\n this.calculateAlignment(alignmentValue, location.y, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Get the label location\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = !this.inverted ? textSize.height : textSize.width;\n var extraSpace = this.borderWidth + textLength / 2 + padding;\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation - rect.height + extraSpace + margin.top) :\n (labelLocation + rect.height - extraSpace - margin.bottom) :\n isMinus ? (labelLocation + rect.width - extraSpace - margin.left) :\n (labelLocation - rect.width + extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, extraSpace, isMinus);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea' && series.type !== 'SplineRangeArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n // eslint-disable-next-line no-self-assign\n case 'Center':\n labelLocation = labelLocation;\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'SplineRangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if ((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) {\n location = !this.inverted ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.left + this.markerHeight;\n }\n else {\n location = !this.inverted ? location + extraSpace + margin.top + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n break;\n }\n return location;\n };\n /**\n * Updates the label location\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isInversed ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isInversed ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Animates the data label.\n *\n * @param {Series} series - Data label of the series gets animated.\n * @returns {void}\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `SeriesDirective` directive represent a series of the react chart.\n * It must be contained in a Chart component(`ChartComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar SeriesDirective = /** @class */ (function (_super) {\n __extends(SeriesDirective, _super);\n function SeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesDirective.moduleName = 'series';\n SeriesDirective.complexTemplate = { 'dataLabelTemplate': 'dataLabel.template' };\n return SeriesDirective;\n}(ComplexBase));\nexport { SeriesDirective };\nvar SeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(SeriesCollectionDirective, _super);\n function SeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesCollectionDirective.propertyName = 'series';\n SeriesCollectionDirective.moduleName = 'seriesCollection';\n return SeriesCollectionDirective;\n}(ComplexBase));\nexport { SeriesCollectionDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { RadioButton } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react RadioButton Component.\n * ```ts\n * \n * ```\n */\nvar RadioButtonComponent = /** @class */ (function (_super) {\n __extends(RadioButtonComponent, _super);\n function RadioButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n RadioButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return RadioButtonComponent;\n}(RadioButton));\nexport { RadioButtonComponent };\napplyMixins(RadioButtonComponent, [ComponentBase, React.Component]);\n","/**\r\n * ReactPlugin.ts\r\n * @copyright Microsoft 2019\r\n */\r\n\r\nimport {\r\n IConfig, IPageViewTelemetry, IMetricTelemetry, IAppInsights\r\n} from \"@microsoft/applicationinsights-common\";\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore,\r\n ITelemetryPlugin, BaseTelemetryPlugin, CoreUtils, ITelemetryItem, IProcessTelemetryContext,\r\n ITelemetryPluginChain, _InternalMessageId, LoggingSeverity, ICustomProperties\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport { IReactExtensionConfig } from './Interfaces/IReactExtensionConfig';\r\nimport { History, LocationListener, Location, Action } from \"history\";\r\n\r\nexport default class ReactPlugin extends BaseTelemetryPlugin {\r\n public priority = 185;\r\n public identifier = 'ReactPlugin';\r\n\r\n private _analyticsPlugin: IAppInsights;\r\n private _extensionConfig: IReactExtensionConfig;\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n this._extensionConfig =\r\n config.extensionConfig && config.extensionConfig[this.identifier]\r\n ? (config.extensionConfig[this.identifier] as IReactExtensionConfig)\r\n : { history: null };\r\n\r\n CoreUtils.arrForEach(extensions, ext => {\r\n const identifier = (ext as ITelemetryPlugin).identifier;\r\n if (identifier === 'ApplicationInsightsAnalytics') {\r\n this._analyticsPlugin = (ext as any) as IAppInsights;\r\n }\r\n });\r\n if (this._extensionConfig.history) {\r\n this.addHistoryListener(this._extensionConfig.history);\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: this._extensionConfig.history.location.pathname\r\n };\r\n this.trackPageView(pageViewTelemetry);\r\n }\r\n }\r\n\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n trackMetric(metric: IMetricTelemetry, customProperties: ICustomProperties) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackMetric(metric, customProperties);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n if (this._analyticsPlugin) {\r\n this._analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n }\r\n\r\n private addHistoryListener(history: History): void {\r\n const locationListener: LocationListener = (location: Location, action: Action): void => {\r\n // Timeout to ensure any changes to the DOM made by route changes get included in pageView telemetry\r\n setTimeout(() => {\r\n const pageViewTelemetry: IPageViewTelemetry = { uri: location.pathname };\r\n this.trackPageView(pageViewTelemetry);\r\n }, 500);\r\n };\r\n history.listen(locationListener);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IMetricTelemetry } from '@microsoft/applicationinsights-common';\r\nimport * as React from 'react';\r\nimport ReactPlugin from './ReactPlugin';\r\n\r\n/**\r\n * Higher-order component function to hook Application Insights tracking \r\n * in a React component's lifecycle.\r\n * \r\n * @param reactPlugin ReactPlugin instance\r\n * @param Component the React component to be instrumented \r\n * @param componentName (optional) component name\r\n * @param className (optional) className of the HOC div\r\n */\r\nexport default function withAITracking

    (reactPlugin: ReactPlugin, Component: React.ComponentType

    , componentName?: string, className?: string): React.ComponentClass

    {\r\n\r\n if (componentName === undefined || componentName === null || typeof componentName !== 'string') {\r\n componentName = Component.prototype.constructor.name;\r\n }\r\n\r\n if (className === undefined || className === null || typeof className !== 'string') {\r\n className = '';\r\n }\r\n\r\n return class extends React.Component

    {\r\n private _mountTimestamp: number = 0;\r\n private _firstActiveTimestamp: number = 0;\r\n private _idleStartTimestamp: number = 0;\r\n private _lastActiveTimestamp: number = 0;\r\n private _totalIdleTime: number = 0;\r\n private _idleCount: number = 0;\r\n private _idleTimeout: number = 5000;\r\n private _intervalId?: any;\r\n\r\n public componentDidMount() {\r\n this._mountTimestamp = Date.now();\r\n this._firstActiveTimestamp = 0;\r\n this._totalIdleTime = 0;\r\n this._lastActiveTimestamp = 0;\r\n this._idleStartTimestamp = 0;\r\n this._idleCount = 0;\r\n\r\n this._intervalId = setInterval(() => {\r\n if (this._lastActiveTimestamp > 0 && this._idleStartTimestamp === 0 && Date.now() - this._lastActiveTimestamp >= this._idleTimeout) {\r\n this._idleStartTimestamp = Date.now();\r\n this._idleCount++;\r\n }\r\n }, 100);\r\n }\r\n\r\n public componentWillUnmount() {\r\n if (this._mountTimestamp === 0) {\r\n throw new Error('withAITracking:componentWillUnmount: mountTimestamp is not initialized.');\r\n }\r\n if (this._intervalId) {\r\n clearInterval(this._intervalId);\r\n }\r\n\r\n if (this._firstActiveTimestamp === 0) {\r\n return;\r\n }\r\n\r\n const engagementTime = this.getEngagementTimeSeconds();\r\n const metricData: IMetricTelemetry = {\r\n average: engagementTime,\r\n name: 'React Component Engaged Time (seconds)',\r\n sampleCount: 1\r\n };\r\n\r\n const additionalProperties: { [key: string]: any } = { 'Component Name': componentName };\r\n reactPlugin.trackMetric(metricData, additionalProperties);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n

    \r\n );\r\n }\r\n\r\n private trackActivity = (e: React.SyntheticEvent): void => {\r\n if (this._firstActiveTimestamp === 0) {\r\n this._firstActiveTimestamp = Date.now();\r\n this._lastActiveTimestamp = this._firstActiveTimestamp;\r\n } else {\r\n this._lastActiveTimestamp = Date.now();\r\n }\r\n\r\n if (this._idleStartTimestamp > 0) {\r\n const lastIdleTime = this._lastActiveTimestamp - this._idleStartTimestamp;\r\n this._totalIdleTime += lastIdleTime;\r\n this._idleStartTimestamp = 0;\r\n }\r\n }\r\n\r\n private getEngagementTimeSeconds(): number {\r\n return (Date.now() - this._firstActiveTimestamp - this._totalIdleTime - this._idleCount * this._idleTimeout) / 1000;\r\n }\r\n }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n NumericTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return NumericTextBoxComponent;\n}(NumericTextBox));\nexport { NumericTextBoxComponent };\napplyMixins(NumericTextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `AggregateDirective` represent a aggregate row of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n* \n * \n * \n * ```\n */\nvar AggregateDirective = /** @class */ (function (_super) {\n __extends(AggregateDirective, _super);\n function AggregateDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateDirective.moduleName = 'aggregate';\n return AggregateDirective;\n}(ComplexBase));\nexport { AggregateDirective };\nvar AggregatesDirective = /** @class */ (function (_super) {\n __extends(AggregatesDirective, _super);\n function AggregatesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregatesDirective.propertyName = 'aggregates';\n AggregatesDirective.moduleName = 'aggregates';\n return AggregatesDirective;\n}(ComplexBase));\nexport { AggregatesDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `AggregateColumnDirective represent a aggregate column of the react Grid.\n * ```tsx\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar AggregateColumnDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnDirective, _super);\n function AggregateColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnDirective.moduleName = 'aggregateColumn';\n return AggregateColumnDirective;\n}(ComplexBase));\nexport { AggregateColumnDirective };\nvar AggregateColumnsDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnsDirective, _super);\n function AggregateColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnsDirective.propertyName = 'columns';\n AggregateColumnsDirective.moduleName = 'aggregateColumns';\n return AggregateColumnsDirective;\n}(ComplexBase));\nexport { AggregateColumnsDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * Show Tooltip\n * ```\n */\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TooltipComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TooltipComponent;\n}(Tooltip));\nexport { TooltipComponent };\napplyMixins(TooltipComponent, [ComponentBase, React.Component]);\n","import { classList, addClass, removeClass, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { EventHandler, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Dialog, calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { createCboxWithWrap, toogleCheckbox, parentsUntil, removeAddCboxClasses } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { SearchBox } from '../services/focus-strategy';\nimport * as literals from '../base/string-literals';\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.hideDialogFunction = this.hideDialog.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, true, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, true, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', 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 ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.addEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.rtlUpdated, this.rtlUpdate, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.resetColumns, this.onResetColumns, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.uiUpdate, this.enableAfterRenderEle);\n this.parent.off(events.rtlUpdated, this.rtlUpdate);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.off(events.resetColumns, this.onResetColumns);\n this.parent.removeEventListener(events.dataBound, this.hideDialogFunction);\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderDlgContent();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc')) || !isNullOrUndefined(closest(targetElement, '.e-cc-toolbar'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n var toolbarItem = closest(target, '.e-toolbar-item');\n var newpos = void 0;\n if (isSticky) {\n newpos = toolbarItem.getBoundingClientRect();\n this.dlgObj.element.classList.add('e-sticky');\n }\n else {\n this.dlgObj.element.classList.remove('e-sticky');\n newpos = calculateRelativeBasedPosition(toolbarItem, this.dlgObj.element);\n }\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(events.columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.action === 'escape') {\n this.hideDialog();\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('ColumnChooserDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n header: this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n buttons: [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: { cssClass: 'e-flat e-cc e-cc-cnbtn', content: this.l10n.getConstant('CancelButton') }\n }],\n content: this.renderChooserList(),\n width: 250,\n cssClass: 'e-cc',\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search') }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n this.mainDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[index];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[index];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(events.columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll) {\n if (selectAll === void 0) { selectAll = false; }\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var fltrCol;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n }\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n }\n else {\n return;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[i].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[i].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn = this.dlgObj.btnObj[0];\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n }\n else if (selected) {\n className = ['e-stop'];\n }\n else {\n className = ['e-uncheck'];\n btn.disabled = true;\n }\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('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 }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[i].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1) {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[i]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[i];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n btn.disabled = true;\n }\n btn.dataBind();\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[i];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[i];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[i], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n cbox.querySelector('.e-label').innerHTML = label;\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (openCC[i].classList.contains('e-dialog') || this.parent.element.id + '_ccdlg' !== openCC[i].id) {\n openCC[i].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n this.parent.trigger(events.beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\nimport { IPlugin, ITelemetryPlugin } from '../JavaScriptSDK.Interfaces/ITelemetryPlugin';\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { _InternalLogMessage } from \"./DiagnosticLogger\";\r\nimport { _InternalMessageId } from '../JavaScriptSDK.Enums/LoggingEnums';\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { ITelemetryPluginChain } from '../JavaScriptSDK.Interfaces/ITelemetryPluginChain';\r\n\r\nlet _isFunction = CoreUtils.isFunction;\r\nlet processTelemetry = \"processTelemetry\";\r\nlet priority = \"priority\";\r\nlet setNextPlugin = \"setNextPlugin\";\r\nlet isInitialized = \"isInitialized\";\r\n\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext:ProcessTelemetryContext, extensions: IPlugin[]) {\r\n\r\n // Set the next plugin and identified the uninitialized plugins\r\n let initPlugins:ITelemetryPlugin[] = [];\r\n let lastPlugin:ITelemetryPlugin = null;\r\n let proxy:ITelemetryPluginChain = processContext.getNext();\r\n while (proxy) {\r\n let thePlugin = proxy.getPlugin();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n _isFunction(lastPlugin[setNextPlugin]) &&\r\n _isFunction(thePlugin[processTelemetry])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[setNextPlugin](thePlugin);\r\n }\r\n\r\n if (!_isFunction(thePlugin[isInitialized]) || !thePlugin[isInitialized]()) {\r\n initPlugins.push(thePlugin);\r\n }\r\n\r\n lastPlugin = thePlugin;\r\n proxy = proxy.getNext();\r\n }\r\n }\r\n\r\n // Now initiatilize the plugins\r\n CoreUtils.arrForEach(initPlugins, thePlugin => {\r\n thePlugin.initialize(\r\n processContext.getCfg(), \r\n processContext.core(), \r\n extensions, \r\n processContext.getNext());\r\n });\r\n}\r\n\r\nexport function sortPlugins(plugins:IPlugin[]) {\r\n // Sort by priority\r\n return plugins.sort((extA, extB) => {\r\n let result = 0;\r\n let bHasProcess = _isFunction(extB[processTelemetry]);\r\n if (_isFunction(extA[processTelemetry])) {\r\n result = bHasProcess ? extA[priority] - extB[priority] : 1;\r\n } else if (bHasProcess) {\r\n result = -1;\r\n }\r\n\r\n return result;\r\n });\r\n // sort complete \r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\nimport { IAppInsightsCore } from \"../JavaScriptSDK.Interfaces/IAppInsightsCore\"\r\nimport { IConfiguration } from \"../JavaScriptSDK.Interfaces/IConfiguration\";\r\nimport { IChannelControls } from \"../JavaScriptSDK.Interfaces/IChannelControls\";\r\nimport { IPlugin, ITelemetryPlugin } from \"../JavaScriptSDK.Interfaces/ITelemetryPlugin\";\r\nimport { ITelemetryItem } from \"../JavaScriptSDK.Interfaces/ITelemetryItem\";\r\nimport { IProcessTelemetryContext } from \"../JavaScriptSDK.Interfaces/IProcessTelemetryContext\";\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { _InternalLogMessage } from \"./DiagnosticLogger\";\r\nimport { BaseTelemetryPlugin } from './BaseTelemetryPlugin';\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { initializePlugins } from './TelemetryHelpers';\r\n\r\nconst ChannelControllerPriority = 500;\r\nconst ChannelValidationMessage = \"Channel has invalid priority\";\r\n\r\nlet _arrForEach = CoreUtils.arrForEach;\r\nlet _objDefineAccessors = CoreUtils.objDefineAccessors;\r\n\r\nfunction _checkQueuePriority(queue:IChannelControls[]) {\r\n _arrForEach(queue, queueItem => {\r\n if (queueItem.priority < ChannelControllerPriority) {\r\n throw Error(ChannelValidationMessage + queueItem.identifier);\r\n }\r\n });\r\n}\r\n\r\nfunction _addChannelQueue(channelQueues:IChannelControls[][], queue:IChannelControls[]) {\r\n if (queue && queue.length > 0) {\r\n queue = queue.sort((a, b) => { // sort based on priority within each queue\r\n return a.priority - b.priority;\r\n });\r\n\r\n _checkQueuePriority(queue);\r\n channelQueues.push(queue);\r\n }\r\n}\r\n\r\nfunction _createChannelQueues(channels:IChannelControls[][], extensions: IPlugin[]) {\r\n let channelQueues:IChannelControls[][] = [];\r\n\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n _arrForEach(channels, queue => _addChannelQueue(channelQueues, queue));\r\n }\r\n\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n let extensionQueue:IChannelControls[] = [];\r\n _arrForEach(extensions as IChannelControls[], plugin => {\r\n if (plugin.priority > ChannelControllerPriority) {\r\n extensionQueue.push(plugin);\r\n }\r\n });\r\n \r\n _addChannelQueue(channelQueues, extensionQueue);\r\n }\r\n\r\n return channelQueues;\r\n}\r\n\r\nexport class ChannelController extends BaseTelemetryPlugin {\r\n\r\n identifier: string = \"ChannelControllerPlugin\";\r\n\r\n setNextPlugin: (next: ITelemetryPlugin) => {}; // channel controller is last in pipeline\r\n\r\n priority: number = ChannelControllerPriority; // in reserved range 100 to 200\r\n\r\n private _channelQueue: IChannelControls[][];\r\n\r\n public processTelemetry(item: ITelemetryItem, itemCtx: IProcessTelemetryContext) {\r\n if (this._channelQueue) {\r\n _arrForEach(this._channelQueue, queues => {\r\n // pass on to first item in queue\r\n if (queues.length > 0) {\r\n // Copying the item context as we could have mutiple chains that are executing asynchronously\r\n // and calling _getDefTelCtx as it's possible that the caller doesn't pass any context\r\n let chainCtx = this._getTelCtx(itemCtx).createNew(queues); \r\n chainCtx.processNext(item);\r\n }\r\n });\r\n }\r\n };\r\n\r\n public getChannelControls(): IChannelControls[][] {\r\n return this._channelQueue;\r\n }\r\n\r\n public initialize(config: IConfiguration, core: IAppInsightsCore, extensions: IPlugin[]) {\r\n let _self = this;\r\n if (_self.isInitialized()) {\r\n // already initialized\r\n return;\r\n }\r\n\r\n super.initialize(config, core, extensions);\r\n\r\n if ((config as any).isCookieUseDisabled) {\r\n CoreUtils.disableCookies();\r\n }\r\n \r\n let channelQueue = _self._channelQueue = _createChannelQueues((config||{}).channels, extensions);\r\n\r\n // Initialize the Queues\r\n _arrForEach(channelQueue, queue => initializePlugins(new ProcessTelemetryContext(queue, config, core), extensions));\r\n }\r\n\r\n /**\r\n * Static constructor, attempt to create accessors\r\n */\r\n // tslint:disable-next-line\r\n private static _staticInit = (() => {\r\n // Dynamically create get/set property accessors\r\n _objDefineAccessors(ChannelController.prototype, \"ChannelControls\", ChannelController.prototype.getChannelControls);\r\n _objDefineAccessors(ChannelController.prototype, \"channelQueue\", ChannelController.prototype.getChannelControls);\r\n })();\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n/**\r\n * Type of storage to differentiate between local storage and session storage\r\n */\r\nexport enum StorageType {\r\n LocalStorage,\r\n SessionStorage\r\n}\r\n\r\n/**\r\n * Enum is used in aiDataContract to describe how fields are serialized. \r\n * For instance: (Fieldtype.Required | FieldType.Array) will mark the field as required and indicate it's an array\r\n */\r\nexport enum FieldType { Default = 0, Required = 1, Array = 2, Hidden = 4 };\r\n\r\nexport enum DistributedTracingModes {\r\n /**\r\n * (Default) Send Application Insights correlation headers\r\n */\r\n\r\n AI=0,\r\n\r\n /**\r\n * Send both W3C Trace Context headers and back-compatibility Application Insights headers\r\n */\r\n AI_AND_W3C,\r\n\r\n /**\r\n * Send W3C Trace Context headers\r\n */\r\n W3C\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\n\r\nimport { IAppInsightsCore } from \"../JavaScriptSDK.Interfaces/IAppInsightsCore\"\r\nimport { IConfiguration } from \"../JavaScriptSDK.Interfaces/IConfiguration\";\r\nimport { IPlugin, ITelemetryPlugin } from \"../JavaScriptSDK.Interfaces/ITelemetryPlugin\";\r\nimport { IChannelControls } from \"../JavaScriptSDK.Interfaces/IChannelControls\";\r\nimport { ITelemetryItem } from \"../JavaScriptSDK.Interfaces/ITelemetryItem\";\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { INotificationManager } from '../JavaScriptSDK.Interfaces/INotificationManager';\r\nimport { INotificationListener } from \"../JavaScriptSDK.Interfaces/INotificationListener\";\r\nimport { IDiagnosticLogger } from \"../JavaScriptSDK.Interfaces/IDiagnosticLogger\";\r\nimport { ChannelController } from './ChannelController';\r\nimport { IProcessTelemetryContext } from '../JavaScriptSDK.Interfaces/IProcessTelemetryContext';\r\nimport { ProcessTelemetryContext } from './ProcessTelemetryContext';\r\nimport { initializePlugins, sortPlugins } from './TelemetryHelpers';\r\nimport { _InternalMessageId, LoggingSeverity } from \"../JavaScriptSDK.Enums/LoggingEnums\";\r\n\r\nconst validationError = \"Extensions must provide callback to initialize\";\r\n\r\nconst _arrForEach = CoreUtils.arrForEach;\r\nconst _isNullOrUndefined = CoreUtils.isNullOrUndefined;\r\n\r\nexport class BaseCore implements IAppInsightsCore {\r\n public static defaultConfig: IConfiguration;\r\n public config: IConfiguration;\r\n public logger: IDiagnosticLogger;\r\n\r\n public _extensions: IPlugin[];\r\n public isInitialized: () => boolean;\r\n protected _notificationManager: INotificationManager;\r\n private _eventQueue: ITelemetryItem[];\r\n private _channelController: ChannelController;\r\n private _setInit: (value: boolean) => void;\r\n\r\n constructor() {\r\n let _isInitialized = false;\r\n let _this = this;\r\n _this._extensions = new Array();\r\n _this._channelController = new ChannelController();\r\n _this.isInitialized = () => _isInitialized;\r\n _this._setInit = (value: boolean) => { _isInitialized = value; }\r\n _this._eventQueue = [];\r\n }\r\n\r\n initialize(config: IConfiguration, extensions: IPlugin[], logger?: IDiagnosticLogger, notificationManager?: INotificationManager): void {\r\n let _this = this;\r\n\r\n // Make sure core is only initialized once\r\n if (_this.isInitialized()) {\r\n throw Error(\"Core should not be initialized more than once\");\r\n }\r\n\r\n if (!config || _isNullOrUndefined(config.instrumentationKey)) {\r\n throw Error(\"Please provide instrumentation key\");\r\n }\r\n\r\n _this.config = config;\r\n let channelController = _this._channelController;\r\n\r\n if (!notificationManager) {\r\n // Create Dummy notification manager\r\n notificationManager = CoreUtils.objCreate({\r\n addNotificationListener: (listener: INotificationListener) => { },\r\n removeNotificationListener: (listener: INotificationListener) => { },\r\n eventsSent: (events: ITelemetryItem[]) => { },\r\n eventsDiscarded: (events: ITelemetryItem[], reason: number) => { }\r\n })\r\n }\r\n\r\n _this._notificationManager = notificationManager as INotificationManager;\r\n config.extensions = _isNullOrUndefined(config.extensions) ? [] : config.extensions;\r\n\r\n // add notification to the extensions in the config so other plugins can access it\r\n let extConfig = config.extensionConfig = _isNullOrUndefined(config.extensionConfig) ? {} : config.extensionConfig;\r\n extConfig.NotificationManager = notificationManager;\r\n\r\n if (!logger) {\r\n logger = CoreUtils.objCreate({\r\n throwInternal: (severity: LoggingSeverity, msgId: _InternalMessageId, msg: string, properties?: Object, isUserAct = false) => { },\r\n warnToConsole: (message: string) => { },\r\n resetInternalMessageCount: () => { }\r\n });\r\n }\r\n _this.logger = logger;\r\n\r\n // Concat all available extensions\r\n let allExtensions = [];\r\n allExtensions.push(...extensions, ...config.extensions);\r\n allExtensions = sortPlugins(allExtensions);\r\n\r\n let coreExtensions:any[] = [];\r\n let channelExtensions:any[] = [];\r\n\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the \r\n const extPriorities = {};\r\n\r\n // Extension validation\r\n _arrForEach(allExtensions, (ext: ITelemetryPlugin) => {\r\n if (_isNullOrUndefined(ext) || _isNullOrUndefined(ext.initialize)) {\r\n throw Error(validationError);\r\n }\r\n\r\n const extPriority = ext.priority;\r\n const identifier = ext.identifier;\r\n\r\n if (ext && extPriority) {\r\n if (!_isNullOrUndefined(extPriorities[extPriority])) {\r\n logger.warnToConsole(\"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n } else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelController.priority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions.push(ext);\r\n } else {\r\n // Add all other extensions to be managed by the channel controller\r\n channelExtensions.push(ext);\r\n }\r\n });\r\n // Validation complete\r\n\r\n // Add the channelController to the complete extension collection and\r\n // to the end of the core extensions\r\n allExtensions.push(channelController);\r\n coreExtensions.push(channelController);\r\n\r\n // Sort the complete set of extensions by priority\r\n allExtensions = sortPlugins(allExtensions);\r\n _this._extensions = allExtensions;\r\n\r\n // initialize channel controller first, this will initialize all channel plugins\r\n initializePlugins(new ProcessTelemetryContext([channelController], config, _this), allExtensions);\r\n initializePlugins(new ProcessTelemetryContext(coreExtensions, config, _this), allExtensions);\r\n\r\n // Now reset the extensions to just those being managed by Basecore\r\n _this._extensions = coreExtensions;\r\n\r\n if (_this.getTransmissionControls().length === 0) {\r\n throw new Error(\"No channels available\");\r\n }\r\n\r\n _this._setInit(true);\r\n }\r\n\r\n getTransmissionControls(): IChannelControls[][] {\r\n return this._channelController.getChannelControls();\r\n }\r\n\r\n track(telemetryItem: ITelemetryItem) {\r\n let _this = this;\r\n if (!telemetryItem.iKey) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = _this.config.instrumentationKey;\r\n }\r\n if (!telemetryItem.time) {\r\n // add default timestamp if not passed in\r\n telemetryItem.time = CoreUtils.toISOString(new Date());\r\n }\r\n if (_isNullOrUndefined(telemetryItem.ver)) {\r\n // CommonSchema 4.0\r\n telemetryItem.ver = \"4.0\";\r\n }\r\n\r\n if (_this.isInitialized()) {\r\n // Release queue\r\n if (_this._eventQueue.length > 0) {\r\n _arrForEach(_this._eventQueue, (event: ITelemetryItem) => {\r\n _this.getProcessTelContext().processNext(event);\r\n });\r\n _this._eventQueue = [];\r\n }\r\n // Process the telemetry plugin chain\r\n _this.getProcessTelContext().processNext(telemetryItem);\r\n } else {\r\n // Queue events until all extensions are initialized\r\n _this._eventQueue.push(telemetryItem);\r\n }\r\n }\r\n\r\n getProcessTelContext(): IProcessTelemetryContext {\r\n let _this = this;\r\n let extensions = _this._extensions;\r\n let thePlugins: IPlugin[] = extensions;\r\n\r\n // invoke any common telemetry processors before sending through pipeline\r\n if (!extensions || extensions.length === 0) {\r\n // Pass to Channel controller so data is sent to correct channel queues\r\n thePlugins = [_this._channelController];\r\n }\r\n\r\n return new ProcessTelemetryContext(thePlugins, _this.config, _this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * The EventsDiscardedReason enumeration contains a set of values that specify the reason for discarding an event.\r\n */\r\nexport const EventsDiscardedReason = {\r\n /**\r\n * Unknown.\r\n */\r\n Unknown: 0,\r\n /**\r\n * Status set to non-retryable.\r\n */\r\n NonRetryableStatus: 1,\r\n /**\r\n * The event is invalid.\r\n */\r\n InvalidEvent: 2,\r\n /**\r\n * The size of the event is too large.\r\n */\r\n SizeLimitExceeded: 3,\r\n /**\r\n * The server is not accepting events from this instrumentation key.\r\n */\r\n KillSwitch: 4,\r\n /**\r\n * The event queue is full.\r\n */\r\n QueueFull: 5,\r\n};\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ITelemetryItem } from \"../JavaScriptSDK.Interfaces/ITelemetryItem\";\r\nimport { INotificationListener } from \"../JavaScriptSDK.Interfaces/INotificationListener\";\r\nimport { INotificationManager } from './../JavaScriptSDK.Interfaces/INotificationManager';\r\nimport { CoreUtils } from \"./CoreUtils\";\r\n\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nexport class NotificationManager implements INotificationManager {\r\n listeners: INotificationListener[] = [];\r\n\r\n /**\r\n * Adds a notification listener.\r\n * @param {INotificationListener} listener - The notification listener to be added.\r\n */\r\n addNotificationListener(listener: INotificationListener): void {\r\n this.listeners.push(listener);\r\n }\r\n\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n removeNotificationListener(listener: INotificationListener): void {\r\n let index: number = CoreUtils.arrIndexOf(this.listeners, listener);\r\n while (index > -1) {\r\n this.listeners.splice(index, 1);\r\n index = CoreUtils.arrIndexOf(this.listeners, listener);\r\n }\r\n }\r\n\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n eventsSent(events: ITelemetryItem[]): void {\r\n for (let i: number = 0; i < this.listeners.length; ++i) {\r\n if (this.listeners[i].eventsSent) {\r\n setTimeout(() => this.listeners[i].eventsSent(events), 0);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n eventsDiscarded(events: ITelemetryItem[], reason: number): void {\r\n for (let i: number = 0; i < this.listeners.length; ++i) {\r\n if (this.listeners[i].eventsDiscarded) {\r\n setTimeout(() => this.listeners[i].eventsDiscarded(events, reason), 0);\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { IAppInsightsCore } from \"../JavaScriptSDK.Interfaces/IAppInsightsCore\"\r\nimport { BaseCore } from './BaseCore';\r\nimport { IConfiguration } from \"../JavaScriptSDK.Interfaces/IConfiguration\";\r\nimport { IPlugin } from \"../JavaScriptSDK.Interfaces/ITelemetryPlugin\";\r\nimport { IChannelControls } from \"../JavaScriptSDK.Interfaces/IChannelControls\";\r\nimport { ITelemetryItem } from \"../JavaScriptSDK.Interfaces/ITelemetryItem\";\r\nimport { INotificationListener } from \"../JavaScriptSDK.Interfaces/INotificationListener\";\r\nimport { EventsDiscardedReason } from \"../JavaScriptSDK.Enums/EventsDiscardedReason\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { CoreUtils } from \"./CoreUtils\";\r\nimport { IDiagnosticLogger } from \"../JavaScriptSDK.Interfaces/IDiagnosticLogger\";\r\nimport { _InternalLogMessage, DiagnosticLogger } from \"./DiagnosticLogger\";\r\n\r\n\"use strict\";\r\n\r\nexport class AppInsightsCore extends BaseCore implements IAppInsightsCore {\r\n public config: IConfiguration;\r\n public logger: IDiagnosticLogger;\r\n\r\n protected _notificationManager: NotificationManager;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n initialize(config: IConfiguration, extensions: IPlugin[]): void {\r\n let _self = this;\r\n _self._notificationManager = new NotificationManager();\r\n _self.logger = new DiagnosticLogger(config);\r\n _self.config = config;\r\n \r\n super.initialize(config, extensions, _self.logger, _self._notificationManager);\r\n }\r\n\r\n getTransmissionControls(): IChannelControls[][] {\r\n return super.getTransmissionControls();\r\n }\r\n\r\n track(telemetryItem: ITelemetryItem) {\r\n if (telemetryItem === null) {\r\n this._notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throw Error(\"Invalid telemetry item\");\r\n }\r\n \r\n // do basic validation before sending it through the pipeline\r\n this._validateTelemetryItem(telemetryItem);\r\n\r\n super.track(telemetryItem);\r\n }\r\n\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n addNotificationListener(listener: INotificationListener): void {\r\n if (this._notificationManager) {\r\n this._notificationManager.addNotificationListener(listener);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n removeNotificationListener(listener: INotificationListener): void {\r\n if (this._notificationManager) {\r\n this._notificationManager.removeNotificationListener(listener);\r\n }\r\n }\r\n\r\n /**\r\n * Periodically check logger.queue for\r\n */\r\n pollInternalLogs(eventName?: string): number {\r\n let interval = this.config.diagnosticLogInterval;\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n\r\n return setInterval(() => {\r\n let _self = this;\r\n const queue: _InternalLogMessage[] = _self.logger ? _self.logger.queue : [];\r\n\r\n CoreUtils.arrForEach(queue, (logMessage: _InternalLogMessage) => {\r\n const item: ITelemetryItem = {\r\n name: eventName ? eventName : \"InternalMessageId: \" + logMessage.messageId,\r\n iKey: _self.config.instrumentationKey,\r\n time: CoreUtils.toISOString(new Date()),\r\n baseType: _InternalLogMessage.dataType,\r\n baseData: { message: logMessage.message }\r\n };\r\n\r\n _self.track(item);\r\n });\r\n queue.length = 0;\r\n }, interval) as any;\r\n }\r\n\r\n private _validateTelemetryItem(telemetryItem: ITelemetryItem) {\r\n\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.name)) {\r\n this._notifyInvalidEvent(telemetryItem);\r\n throw Error(\"telemetry name required\");\r\n }\r\n }\r\n\r\n private _notifyInvalidEvent(telemetryItem: ITelemetryItem): void {\r\n if (this._notificationManager) {\r\n this._notificationManager.eventsDiscarded([telemetryItem], EventsDiscardedReason.InvalidEvent);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport class RequestHeaders {\r\n /**\r\n * Request-Context header\r\n */\r\n public static requestContextHeader = \"Request-Context\";\r\n\r\n /**\r\n * Target instrumentation header that is added to the response and retrieved by the\r\n * calling application when processing incoming responses.\r\n */\r\n public static requestContextTargetKey = \"appId\";\r\n\r\n /**\r\n * Request-Context appId format\r\n */\r\n public static requestContextAppIdFormat = \"appId=cid-v1:\";\r\n\r\n /**\r\n * Request-Id header\r\n */\r\n public static requestIdHeader = \"Request-Id\";\r\n\r\n /**\r\n * W3C distributed tracing protocol header\r\n */\r\n public static traceParentHeader = \"traceparent\";\r\n\r\n /**\r\n * W3C distributed tracing protocol state header\r\n */\r\n public static traceStateHeader: \"tracestate\"; // currently not used\r\n\r\n /**\r\n * Sdk-Context header\r\n * If this header passed with appId in content then appId will be returned back by the backend.\r\n */\r\n public static sdkContextHeader = \"Sdk-Context\";\r\n\r\n /**\r\n * String to pass in header for requesting appId back from the backend.\r\n */\r\n public static sdkContextHeaderAppIdRequest = \"appId\";\r\n\r\n public static requestContextHeaderLowerCase = \"request-context\";\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IDiagnosticLogger, LoggingSeverity, _InternalMessageId, CoreUtils, hasJSON, getJSON } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class DataSanitizer {\r\n\r\n /**\r\n * Max length allowed for custom names.\r\n */\r\n public static MAX_NAME_LENGTH = 150;\r\n\r\n /**\r\n * Max length allowed for Id field in page views.\r\n */\r\n public static MAX_ID_LENGTH = 128;\r\n\r\n /**\r\n * Max length allowed for custom values.\r\n */\r\n public static MAX_PROPERTY_LENGTH = 8192;\r\n\r\n /**\r\n * Max length allowed for names\r\n */\r\n public static MAX_STRING_LENGTH = 1024;\r\n\r\n /**\r\n * Max length allowed for url.\r\n */\r\n public static MAX_URL_LENGTH = 2048;\r\n\r\n /**\r\n * Max length allowed for messages.\r\n */\r\n public static MAX_MESSAGE_LENGTH = 32768;\r\n\r\n /**\r\n * Max length allowed for exceptions.\r\n */\r\n public static MAX_EXCEPTION_LENGTH = 32768;\r\n\r\n public static sanitizeKeyAndAddUniqueness(logger: IDiagnosticLogger, key: any, map: any) {\r\n const origLength = key.length;\r\n let field = DataSanitizer.sanitizeKey(logger, key);\r\n\r\n // validation truncated the length. We need to add uniqueness\r\n if (field.length !== origLength) {\r\n let i = 0;\r\n let uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field.substring(0, DataSanitizer.MAX_NAME_LENGTH - 3) + DataSanitizer.padNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n }\r\n\r\n public static sanitizeKey(logger: IDiagnosticLogger, name: any) {\r\n let nameTrunc: String;\r\n if (name) {\r\n // Remove any leading or trailing whitepace\r\n name = DataSanitizer.trim(name.toString());\r\n\r\n // truncate the string to 150 chars\r\n if (name.length > DataSanitizer.MAX_NAME_LENGTH) {\r\n nameTrunc = name.substring(0, DataSanitizer.MAX_NAME_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.NameTooLong,\r\n \"name is too long. It has been truncated to \" + DataSanitizer.MAX_NAME_LENGTH + \" characters.\",\r\n { name }, true);\r\n }\r\n }\r\n\r\n return nameTrunc || name;\r\n }\r\n\r\n public static sanitizeString(logger: IDiagnosticLogger, value: any, maxLength: number = DataSanitizer.MAX_STRING_LENGTH) {\r\n let valueTrunc : String;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : DataSanitizer.MAX_STRING_LENGTH; // in case default parameters dont work\r\n value = DataSanitizer.trim(value);\r\n if (value.toString().length > maxLength) {\r\n valueTrunc = value.toString().substring(0, maxLength);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.StringValueTooLong,\r\n \"string value is too long. It has been truncated to \" + maxLength + \" characters.\",\r\n { value }, true);\r\n }\r\n }\r\n\r\n return valueTrunc || value;\r\n }\r\n\r\n public static sanitizeUrl(logger: IDiagnosticLogger, url: any) {\r\n return DataSanitizer.sanitizeInput(logger, url, DataSanitizer.MAX_URL_LENGTH, _InternalMessageId.UrlTooLong);\r\n }\r\n\r\n public static sanitizeMessage(logger: IDiagnosticLogger, message: any) {\r\n let messageTrunc : String;\r\n if (message) {\r\n if (message.length > DataSanitizer.MAX_MESSAGE_LENGTH) {\r\n messageTrunc = message.substring(0, DataSanitizer.MAX_MESSAGE_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING, _InternalMessageId.MessageTruncated,\r\n \"message is too long, it has been truncated to \" + DataSanitizer.MAX_MESSAGE_LENGTH + \" characters.\",\r\n { message },\r\n true);\r\n }\r\n }\r\n\r\n return messageTrunc || message;\r\n }\r\n\r\n public static sanitizeException(logger: IDiagnosticLogger, exception: any) {\r\n let exceptionTrunc : String;\r\n if (exception) {\r\n if (exception.length > DataSanitizer.MAX_EXCEPTION_LENGTH) {\r\n exceptionTrunc = exception.substring(0, DataSanitizer.MAX_EXCEPTION_LENGTH);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING, _InternalMessageId.ExceptionTruncated, \"exception is too long, it has been truncated to \" + DataSanitizer.MAX_EXCEPTION_LENGTH + \" characters.\",\r\n { exception }, true);\r\n }\r\n }\r\n\r\n return exceptionTrunc || exception;\r\n }\r\n\r\n public static sanitizeProperties(logger: IDiagnosticLogger, properties: any) {\r\n if (properties) {\r\n const tempProps = {};\r\n for (let prop in properties) {\r\n let value = properties[prop];\r\n if (CoreUtils.isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON().stringify(value);\r\n } catch (e) {\r\n logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"custom property is not valid\", { exception: e}, true);\r\n }\r\n }\r\n value = DataSanitizer.sanitizeString(logger, value, DataSanitizer.MAX_PROPERTY_LENGTH);\r\n prop = DataSanitizer.sanitizeKeyAndAddUniqueness(logger, prop, tempProps);\r\n tempProps[prop] = value;\r\n }\r\n properties = tempProps;\r\n }\r\n\r\n return properties;\r\n }\r\n\r\n public static sanitizeMeasurements(logger: IDiagnosticLogger, measurements: any) {\r\n if (measurements) {\r\n const tempMeasurements = {};\r\n for (let measure in measurements) {\r\n const value = measurements[measure];\r\n measure = DataSanitizer.sanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements);\r\n tempMeasurements[measure] = value;\r\n }\r\n measurements = tempMeasurements;\r\n }\r\n\r\n return measurements;\r\n }\r\n\r\n public static sanitizeId(logger: IDiagnosticLogger, id: string): string {\r\n return id ? DataSanitizer.sanitizeInput(logger, id, DataSanitizer.MAX_ID_LENGTH, _InternalMessageId.IdTooLong).toString() : id;\r\n }\r\n\r\n public static sanitizeInput(logger: IDiagnosticLogger, input: any, maxLength: number, _msgId: _InternalMessageId) {\r\n let inputTrunc : String;\r\n if (input) {\r\n input = DataSanitizer.trim(input);\r\n if (input.length > maxLength) {\r\n inputTrunc = input.substring(0, maxLength);\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _msgId,\r\n \"input is too long, it has been truncated to \" + maxLength + \" characters.\",\r\n { data: input },\r\n true);\r\n }\r\n }\r\n\r\n return inputTrunc || input;\r\n }\r\n\r\n public static padNumber(num: number) {\r\n const s = \"00\" + num;\r\n return s.substr(s.length - 3);\r\n }\r\n\r\n /**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\n public static trim(str: any): string {\r\n if (!CoreUtils.isString(str)) { return str; }\r\n return str.replace(/^\\s+|\\s+$/g, \"\");\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { StorageType } from \"./Enums\";\r\nimport { \r\n CoreUtils, EventHelper, _InternalMessageId, LoggingSeverity, IDiagnosticLogger, IPlugin, \r\n getGlobal, getGlobalInst, getWindow, getDocument, getNavigator, getPerformance, getLocation, hasJSON, getJSON,\r\n strPrototype\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { DataSanitizer } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { ICorrelationConfig } from \"./Interfaces/ICorrelationConfig\";\r\n\r\nlet _navigator = getNavigator();\r\nlet _isString = CoreUtils.isString;\r\nlet _uaDisallowsSameSiteNone:boolean = null;\r\n\r\nfunction _endsWith(value:string, search:string) {\r\n let len = value.length;\r\n let start = len - search.length;\r\n return value.substring(start >= 0 ? start : 0, len) === search;\r\n}\r\n\r\nexport class Util {\r\n private static document: any = getDocument()||{};\r\n private static _canUseLocalStorage: boolean = undefined;\r\n private static _canUseSessionStorage: boolean = undefined;\r\n // listing only non-geo specific locations\r\n private static _internalEndpoints: string[] = [\r\n \"https://dc.services.visualstudio.com/v2/track\",\r\n \"https://breeze.aimon.applicationinsights.io/v2/track\",\r\n \"https://dc-int.services.visualstudio.com/v2/track\"\r\n ];\r\n public static NotSpecified = \"not_specified\";\r\n\r\n public static createDomEvent(eventName: string): Event {\r\n let event: Event = null;\r\n\r\n if (CoreUtils.isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n } else { // Event has no constructor in IE\r\n let doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n\r\n return event;\r\n }\r\n\r\n /*\r\n * Force the SDK not to use local and session storage\r\n */\r\n public static disableStorage() {\r\n Util._canUseLocalStorage = false;\r\n Util._canUseSessionStorage = false;\r\n }\r\n\r\n /**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\n private static _getLocalStorageObject(): Storage {\r\n if (Util.canUseLocalStorage()) {\r\n return Util._getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\n private static _getVerifiedStorageObject(storageType: StorageType): Storage {\r\n let storage: Storage = null;\r\n let fail: boolean;\r\n let uid: Date;\r\n try {\r\n if (CoreUtils.isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n uid = new Date;\r\n storage = storageType === StorageType.LocalStorage ? getGlobalInst(\"localStorage\") : getGlobalInst(\"sessionStorage\");\r\n storage.setItem(uid.toString(), uid.toString());\r\n fail = storage.getItem(uid.toString()) !== uid.toString();\r\n storage.removeItem(uid.toString());\r\n if (fail) {\r\n storage = null;\r\n }\r\n } catch (exception) {\r\n storage = null;\r\n }\r\n\r\n return storage;\r\n }\r\n\r\n /**\r\n * Checks if endpoint URL is application insights internal injestion service URL.\r\n *\r\n * @param endpointUrl Endpoint URL to check.\r\n * @returns {boolean} True if if endpoint URL is application insights internal injestion service URL.\r\n */\r\n public static isInternalApplicationInsightsEndpoint(endpointUrl: string): boolean {\r\n return Util._internalEndpoints.indexOf(endpointUrl.toLowerCase()) !== -1;\r\n }\r\n\r\n /**\r\n * Check if the browser supports local storage.\r\n *\r\n * @returns {boolean} True if local storage is supported.\r\n */\r\n public static canUseLocalStorage(): boolean {\r\n if (Util._canUseLocalStorage === undefined) {\r\n Util._canUseLocalStorage = !!Util._getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n\r\n return Util._canUseLocalStorage;\r\n }\r\n\r\n /**\r\n * Get an object from the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to get from storage\r\n * @returns {string} The contents of the storage object with the given name. Null if storage is not supported.\r\n */\r\n public static getStorage(logger: IDiagnosticLogger, name: string): string {\r\n const storage = Util._getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n } catch (e) {\r\n Util._canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotReadLocalStorage,\r\n \"Browser failed read of local storage. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Set the contents of an object in the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to set in storage\r\n * @param {string} data - the contents of the object to set in storage\r\n * @returns {boolean} True if the storage object could be written.\r\n */\r\n public static setStorage(logger: IDiagnosticLogger, name: string, data: string): boolean {\r\n const storage = Util._getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n } catch (e) {\r\n Util._canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotWriteLocalStorage,\r\n \"Browser failed write to local storage. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Remove an object from the browser's local storage\r\n *\r\n * @param {string} name - the name of the object to remove from storage\r\n * @returns {boolean} True if the storage object could be removed.\r\n */\r\n public static removeStorage(logger: IDiagnosticLogger, name: string): boolean {\r\n const storage = Util._getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n } catch (e) {\r\n Util._canUseLocalStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserFailedRemovalFromLocalStorage,\r\n \"Browser failed removal of local storage item. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\n private static _getSessionStorageObject(): Storage {\r\n if (Util.canUseSessionStorage()) {\r\n return Util._getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Check if the browser supports session storage.\r\n *\r\n * @returns {boolean} True if session storage is supported.\r\n */\r\n public static canUseSessionStorage(): boolean {\r\n if (Util._canUseSessionStorage === undefined) {\r\n Util._canUseSessionStorage = !!Util._getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n\r\n return Util._canUseSessionStorage;\r\n }\r\n\r\n /**\r\n * Gets the list of session storage keys\r\n *\r\n * @returns {string[]} List of session storage keys\r\n */\r\n public static getSessionStorageKeys(): string[] {\r\n const keys = [];\r\n\r\n if (Util.canUseSessionStorage()) {\r\n for (const key in getGlobalInst(\"sessionStorage\")) {\r\n keys.push(key);\r\n }\r\n }\r\n return keys;\r\n }\r\n\r\n /**\r\n * Get an object from the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to get from storage\r\n * @returns {string} The contents of the storage object with the given name. Null if storage is not supported.\r\n */\r\n public static getSessionStorage(logger: IDiagnosticLogger, name: string): string {\r\n const storage = Util._getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n } catch (e) {\r\n Util._canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotReadSessionStorage,\r\n \"Browser failed read of session storage. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Set the contents of an object in the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to set in storage\r\n * @param {string} data - the contents of the object to set in storage\r\n * @returns {boolean} True if the storage object could be written.\r\n */\r\n public static setSessionStorage(logger: IDiagnosticLogger, name: string, data: string): boolean {\r\n const storage = Util._getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n } catch (e) {\r\n Util._canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserCannotWriteSessionStorage,\r\n \"Browser failed write to session storage. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Remove an object from the browser's session storage\r\n *\r\n * @param {string} name - the name of the object to remove from storage\r\n * @returns {boolean} True if the storage object could be removed.\r\n */\r\n public static removeSessionStorage(logger: IDiagnosticLogger, name: string): boolean {\r\n const storage = Util._getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.removeItem(name);\r\n return true;\r\n } catch (e) {\r\n Util._canUseSessionStorage = false;\r\n\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserFailedRemovalFromSessionStorage,\r\n \"Browser failed removal of session storage item. \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /*\r\n * Force the SDK not to store and read any data from cookies\r\n */\r\n public static disableCookies() {\r\n CoreUtils.disableCookies();\r\n }\r\n\r\n /*\r\n * helper method to tell if document.cookie object is available\r\n */\r\n public static canUseCookies(logger: IDiagnosticLogger): any {\r\n if (CoreUtils._canUseCookies === undefined) {\r\n CoreUtils._canUseCookies = false;\r\n\r\n try {\r\n CoreUtils._canUseCookies = Util.document.cookie !== undefined;\r\n } catch (e) {\r\n logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.CannotAccessCookie,\r\n \"Cannot access document.cookie - \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n };\r\n }\r\n\r\n return CoreUtils._canUseCookies;\r\n }\r\n\r\n public static disallowsSameSiteNone(userAgent:string) {\r\n if (!_isString(userAgent)) {\r\n return false;\r\n }\r\n \r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (userAgent.indexOf(\"CPU iPhone OS 12\") !== -1 || userAgent.indexOf(\"iPad; CPU OS 12\") !== -1) {\r\n return true;\r\n }\r\n \r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (userAgent.indexOf(\"Macintosh; Intel Mac OS X 10_14\") !== -1 && userAgent.indexOf(\"Version/\") !== -1 && userAgent.indexOf(\"Safari\") !== -1) {\r\n return true;\r\n }\r\n \r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (userAgent.indexOf(\"Macintosh; Intel Mac OS X 10_14\") !== -1 && _endsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n \r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (userAgent.indexOf(\"Chrome/5\") !== -1 || userAgent.indexOf(\"Chrome/6\") !== -1) {\r\n return true;\r\n }\r\n \r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (userAgent.indexOf(\"UnrealEngine\") !== -1 && userAgent.indexOf(\"Chrome\") === -1) {\r\n return true;\r\n }\r\n \r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (userAgent.indexOf(\"UCBrowser/12\") !== -1 || userAgent.indexOf(\"UCBrowser/11\") !== -1) {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n \r\n /**\r\n * helper method to set userId and sessionId cookie\r\n */\r\n public static setCookie(logger: IDiagnosticLogger, name: string, value: string, domain?: string) {\r\n if (Util.canUseCookies(logger)) {\r\n let domainAttrib = \"\";\r\n let secureAttrib = \"\";\r\n\r\n if (domain) {\r\n domainAttrib = \";domain=\" + domain;\r\n }\r\n\r\n let location = getLocation();\r\n if (location && location.protocol === \"https:\") {\r\n secureAttrib = \";secure\";\r\n if (_uaDisallowsSameSiteNone === null) {\r\n _uaDisallowsSameSiteNone = Util.disallowsSameSiteNone((getNavigator()||{} as Navigator).userAgent);\r\n }\r\n \r\n if (!_uaDisallowsSameSiteNone) {\r\n value = value + \";SameSite=None\"; // SameSite can only be set on secure pages\r\n }\r\n }\r\n\r\n Util.document.cookie = name + \"=\" + value + domainAttrib + \";path=/\" + secureAttrib;\r\n }\r\n }\r\n\r\n public static stringToBoolOrDefault(str: any, defaultValue = false): boolean {\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n\r\n return str.toString().toLowerCase() === \"true\";\r\n }\r\n\r\n /**\r\n * helper method to access userId and sessionId cookie\r\n */\r\n public static getCookie(logger: IDiagnosticLogger, name: string) {\r\n if (!Util.canUseCookies(logger)) {\r\n return;\r\n }\r\n\r\n let value = \"\";\r\n if (name && name.length) {\r\n const cookieName = name + \"=\";\r\n const cookies = Util.document.cookie.split(\";\");\r\n for (let i = 0; i < cookies.length; i++) {\r\n let cookie = cookies[i];\r\n cookie = Util.trim(cookie);\r\n if (cookie && cookie.indexOf(cookieName) === 0) {\r\n value = cookie.substring(cookieName.length, cookies[i].length);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\n public static deleteCookie(logger: IDiagnosticLogger, name: string) {\r\n if (Util.canUseCookies(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n Util.document.cookie = name + \"=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;\";\r\n }\r\n }\r\n\r\n /**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\n public static trim(str: any): string {\r\n if (!_isString(str)) { return str; }\r\n return str.replace(/^\\s+|\\s+$/g, \"\");\r\n }\r\n\r\n /**\r\n * generate random id string\r\n */\r\n public static newId(): string {\r\n const base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\n\r\n let result = \"\";\r\n // tslint:disable-next-line:insecure-random\r\n let random = Math.random() * 1073741824; // 5 symbols in base64, almost maxint\r\n\r\n while (random > 0) {\r\n const char = base64chars.charAt(random % 64);\r\n result += char;\r\n random = Math.floor(random / 64);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * generate a random 32bit number (-0x80000000..0x7FFFFFFF).\r\n */\r\n public static random32() {\r\n return (0x100000000 * Math.random()) | 0;\r\n }\r\n\r\n /**\r\n * generate W3C trace id\r\n */\r\n public static generateW3CId() {\r\n const hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n let oct = \"\", tmp;\r\n for (let a = 0; a < 4; a++) {\r\n tmp = Util.random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n const clockSequenceHi = hexValues[8 + (Math.random() * 4) | 0];\r\n return oct.substr(0, 8) + oct.substr(9, 4) + \"4\" + oct.substr(13, 3) + clockSequenceHi + oct.substr(16, 3) + oct.substr(19, 12);\r\n }\r\n\r\n /**\r\n * Check if an object is of type Array\r\n */\r\n public static isArray(obj: any): boolean {\r\n return Object[strPrototype].toString.call(obj) === \"[object Array]\";\r\n }\r\n\r\n /**\r\n * Check if an object is of type Error\r\n */\r\n public static isError(obj: any): boolean {\r\n return Object[strPrototype].toString.call(obj) === \"[object Error]\";\r\n }\r\n\r\n /**\r\n * Check if an object is of type Date\r\n */\r\n public static isDate = CoreUtils.isDate;\r\n\r\n // Keeping this name for backward compatibility (for now)\r\n public static toISOStringForIE8 = CoreUtils.toISOString;\r\n\r\n /**\r\n * Gets IE version if we are running on IE, or null otherwise\r\n */\r\n public static getIEVersion(userAgentStr: string = null): number {\r\n const myNav = userAgentStr ? userAgentStr.toLowerCase() : (_navigator ? (_navigator.userAgent ||\"\").toLowerCase() : \"\");\r\n return (myNav.indexOf('msie') !== -1) ? parseInt(myNav.split('msie')[1]) : null;\r\n }\r\n\r\n /**\r\n * Convert ms to c# time span format\r\n */\r\n public static msToTimeSpan(totalms: number): string {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n\r\n totalms = Math.round(totalms);\r\n\r\n let ms = \"\" + totalms % 1000;\r\n let sec = \"\" + Math.floor(totalms / 1000) % 60;\r\n let min = \"\" + Math.floor(totalms / (1000 * 60)) % 60;\r\n let hour = \"\" + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n const days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n\r\n ms = ms.length === 1 ? \"00\" + ms : ms.length === 2 ? \"0\" + ms : ms;\r\n sec = sec.length < 2 ? \"0\" + sec : sec;\r\n min = min.length < 2 ? \"0\" + min : min;\r\n hour = hour.length < 2 ? \"0\" + hour : hour;\r\n\r\n return (days > 0 ? days + \".\" : \"\") + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n }\r\n\r\n /**\r\n * Checks if error has no meaningful data inside. Ususally such errors are received by window.onerror when error\r\n * happens in a script from other domain (cross origin, CORS).\r\n */\r\n public static isCrossOriginError(message: string, url: string, lineNumber: number, columnNumber: number, error: Error): boolean {\r\n return (message === \"Script error.\" || message === \"Script error\") && !error;\r\n }\r\n\r\n /**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\n public static dump(object: any): string {\r\n const objectTypeDump: string = Object[strPrototype].toString.call(object);\r\n let propertyValueDump: string = \"\";\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object.name + \"'\";\r\n } else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n\r\n return objectTypeDump + propertyValueDump;\r\n }\r\n\r\n /**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\n public static getExceptionName(object: any): string {\r\n const objectTypeDump: string = Object[strPrototype].toString.call(object);\r\n if (objectTypeDump === \"[object Error]\") {\r\n return object.name;\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Adds an event handler for the specified event to the window\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\n public static addEventHandler(eventName: string, callback: any): boolean {\r\n return EventHelper.Attach(getWindow(), eventName, callback);\r\n }\r\n\r\n /**\r\n * Tells if a browser supports a Beacon API\r\n */\r\n public static IsBeaconApiSupported(): boolean {\r\n return ('sendBeacon' in _navigator && (_navigator as any).sendBeacon);\r\n }\r\n\r\n public static getExtension(extensions: IPlugin[], identifier: string) {\r\n let extension = null;\r\n let extIx = 0;\r\n\r\n while (!extension && extIx < extensions.length) {\r\n if (extensions[extIx] && extensions[extIx].identifier === identifier) {\r\n extension = extensions[extIx];\r\n }\r\n extIx++;\r\n }\r\n\r\n return extension;\r\n }\r\n}\r\n\r\nexport class UrlHelper {\r\n private static document: any = getDocument()||{};\r\n private static htmlAnchorElement: HTMLAnchorElement;\r\n\r\n public static parseUrl(url: string): HTMLAnchorElement {\r\n if (!UrlHelper.htmlAnchorElement) {\r\n UrlHelper.htmlAnchorElement = !!UrlHelper.document.createElement ? UrlHelper.document.createElement('a') : { host: UrlHelper.parseHost(url) }; // fill host field in the fallback case as that is the only externally required field from this fn\r\n }\r\n\r\n UrlHelper.htmlAnchorElement.href = url;\r\n\r\n return UrlHelper.htmlAnchorElement;\r\n }\r\n\r\n public static getAbsoluteUrl(url: string): string {\r\n let result: string;\r\n const a = UrlHelper.parseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static getPathName(url: string): string {\r\n let result: string;\r\n const a = UrlHelper.parseUrl(url);\r\n if (a) {\r\n result = a.pathname;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static getCompleteUrl(method: string, absoluteUrl: string) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n } else {\r\n return absoluteUrl;\r\n }\r\n }\r\n\r\n // Fallback method to grab host from url if document.createElement method is not available\r\n public static parseHost(url: string) {\r\n if (url) {\r\n const match = url.match(/:\\/\\/(www[0-9]?\\.)?(.[^/:]+)/i);\r\n if (match != null && match.length > 2 && _isString(match[2]) && match[2].length > 0) {\r\n return match[2];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport class CorrelationIdHelper {\r\n public static correlationIdPrefix = \"cid-v1:\";\r\n\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regexed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n public static canIncludeCorrelationHeader(config: ICorrelationConfig, requestUrl: string, currentHost?: string) {\r\n if (config && config.disableCorrelationHeaders) {\r\n return false;\r\n }\r\n\r\n if (!requestUrl) {\r\n return false;\r\n }\r\n\r\n const requestHost = UrlHelper.parseUrl(requestUrl).host.toLowerCase();\r\n if ((!config || !config.enableCorsCorrelation) && requestHost !== currentHost) {\r\n return false;\r\n }\r\n\r\n const includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n let matchExists: boolean;\r\n CoreUtils.arrForEach(includedDomains, (domain) => {\r\n const regex = new RegExp(domain.toLowerCase().replace(/\\./g, \"\\.\").replace(/\\*/g, \".*\"));\r\n matchExists = matchExists || regex.test(requestHost);\r\n });\r\n\r\n if (!matchExists) {\r\n return false;\r\n }\r\n }\r\n\r\n const excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains.length === 0) {\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < excludedDomains.length; i++) {\r\n const regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\./g, \"\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost.length > 0;\r\n }\r\n\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n public static getCorrelationContext(responseHeader: string) {\r\n if (responseHeader) {\r\n const correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders.requestContextTargetKey);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n public static getCorrelationContextValue(responseHeader: string, key: string) {\r\n if (responseHeader) {\r\n const keyValues = responseHeader.split(\",\");\r\n for (let i = 0; i < keyValues.length; ++i) {\r\n const keyValue = keyValues[i].split(\"=\");\r\n if (keyValue.length === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class AjaxHelper {\r\n public static ParseDependencyPath(logger: IDiagnosticLogger, absoluteUrl: string, method: string, commandName: string) {\r\n let target, name = commandName, data = commandName;\r\n\r\n if (absoluteUrl && absoluteUrl.length > 0) {\r\n const parsedUrl: HTMLAnchorElement = UrlHelper.parseUrl(absoluteUrl)\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl.pathname != null) {\r\n let pathName: string = (parsedUrl.pathname.length === 0) ? \"/\" : parsedUrl.pathname;\r\n if (pathName.charAt(0) !== '/') {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl.pathname;\r\n name = DataSanitizer.sanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n } else {\r\n name = DataSanitizer.sanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n } else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n\r\n return {\r\n target,\r\n name,\r\n data\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport class DateTimeUtils {\r\n /**\r\n * Get the number of milliseconds since 1970/01/01 in local timezone\r\n */\r\n public static Now = () => {\r\n // returns the window or webworker performance object\r\n let perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n return perf.now() + perf.timing.navigationStart\r\n }\r\n \r\n return new Date().getTime()\r\n };\r\n\r\n /**\r\n * Gets duration between two timestamps\r\n */\r\n public static GetDuration = (start: number, end: number): number => {\r\n let result = null;\r\n if (start !== 0 && end !== 0 && !CoreUtils.isNullOrUndefined(start) && !CoreUtils.isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Type of the metric data measurement.\r\n */\r\nexport enum DataPointType {\r\n Measurement = 0,\r\n Aggregation = 1,\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will \r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport const DisabledPropertyName: string = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport const SampleRate = \"sampleRate\";\r\nexport const ProcessLegacy = \"ProcessLegacy\";\r\nexport const HttpMethod = \"http.method\";\r\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// @duplicate of https://github.com/microsoft/ApplicationInsights-node.js/blob/develop/Library/ConnectionStringParser.ts\r\n\r\nimport { ConnectionString, ConnectionStringKey } from \"./Interfaces/ConnectionString\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { CoreUtils } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nexport class ConnectionStringParser {\r\n private static _FIELDS_SEPARATOR = \";\";\r\n private static _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\n\r\n public static parse(connectionString?: string): ConnectionString {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n\r\n const kvPairs = connectionString.split(ConnectionStringParser._FIELDS_SEPARATOR);\r\n\r\n const result: ConnectionString = CoreUtils.arrReduce(kvPairs, (fields: ConnectionString, kv: string) => {\r\n const kvParts = kv.split(ConnectionStringParser._FIELD_KEY_VALUE_SEPARATOR);\r\n\r\n if (kvParts.length === 2) { // only save fields with valid formats\r\n const key = kvParts[0].toLowerCase() as ConnectionStringKey;\r\n const value = kvParts[1];\r\n fields[key] = value as string;\r\n }\r\n return fields;\r\n }, {});\r\n\r\n if (CoreUtils.objKeys(result).length > 0) {\r\n // this is a valid connection string, so parse the results\r\n\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n const locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result.ingestionendpoint = result.ingestionendpoint || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n\r\n // apply the default endpoints\r\n result.ingestionendpoint = result.ingestionendpoint || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n\r\n/**\r\n * Data struct to contain only C section with custom fields.\r\n */\r\nexport class Base {\r\n\r\n /**\r\n * Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.\r\n */\r\n public baseType: string;\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Base } from './Base';\r\n\r\n/**\r\n * Data struct to contain both B and C sections.\r\n */\r\nexport class Data extends Base {\r\n\r\n /**\r\n * Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.\r\n */\r\n public baseType: string;\r\n\r\n /**\r\n * Container for data item (B section).\r\n */\r\n public baseData: TDomain;\r\n\r\n constructor() {\r\n super();\r\n\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Envelope as AIEnvelope } from '../../Interfaces/Contracts/Generated/Envelope';\r\nimport { Base } from '../../Interfaces/Contracts/Generated/Base';\r\nimport { IEnvelope } from '../../Interfaces/Telemetry/IEnvelope';\r\nimport { DataSanitizer } from './DataSanitizer';\r\nimport { FieldType } from '../../Enums';\r\nimport { Util } from '../../Util';\r\nimport { IDiagnosticLogger, CoreUtils } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class Envelope extends AIEnvelope implements IEnvelope {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract: any;\r\n\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n constructor(logger: IDiagnosticLogger, data: Base, name: string) {\r\n super();\r\n\r\n this.name = DataSanitizer.sanitizeString(logger, name) || Util.NotSpecified;\r\n this.data = data;\r\n this.time = CoreUtils.toISOString(new Date());\r\n\r\n this.aiDataContract = {\r\n time: FieldType.Required,\r\n iKey: FieldType.Required,\r\n name: FieldType.Required,\r\n sampleRate: () => {\r\n return (this.sampleRate === 100) ? FieldType.Hidden : FieldType.Required;\r\n },\r\n tags: FieldType.Required,\r\n data: FieldType.Required\r\n };\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Base } from './Base';\r\n\r\n/**\r\n * System variables for a telemetry item.\r\n */\r\nexport class Envelope {\r\n\r\n /**\r\n * Envelope version. For internal use only. By assigning this the default, it will not be serialized within the payload unless changed to a value other than #1.\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Type name of telemetry data item.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Event date time when telemetry item was created. This is the wall clock time on the client when the event was generated. There is no guarantee that the client's time is accurate. This field must be formatted in UTC ISO 8601 format, with a trailing 'Z' character, as described publicly on https://en.wikipedia.org/wiki/ISO_8601#UTC. Note: the number of decimal seconds digits provided are variable (and unspecified). Consumers should handle this, i.e. managed code consumers should not use format 'O' for parsing as it specifies a fixed length. Example: 2009-06-15T13:45:30.0000000Z.\r\n */\r\n public time: string;\r\n\r\n /**\r\n * Sampling rate used in application. This telemetry item represents 1 / sampleRate actual telemetry items.\r\n */\r\n public sampleRate: number;\r\n\r\n /**\r\n * Sequence field used to track absolute order of uploaded events.\r\n */\r\n public seq: string;\r\n\r\n /**\r\n * The application's instrumentation key. The key is typically represented as a GUID, but there are cases when it is not a guid. No code should rely on iKey being a GUID. Instrumentation key is case insensitive.\r\n */\r\n public iKey: string;\r\n\r\n /**\r\n * Key/value collection of context properties. See ContextTagKeys for information on available properties.\r\n */\r\n public tags: any;\r\n\r\n /**\r\n * Telemetry data item.\r\n */\r\n public data: Base;\r\n\r\n constructor() {\r\n this.ver = 1;\r\n this.sampleRate = 100.0;\r\n this.tags = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n\r\n/**\r\n * The abstract common base of all domains.\r\n */\r\nexport class Domain {\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Domain } from './Domain';\r\n\r\n/**\r\n * Instances of Event represent structured event records that can be grouped and searched by their properties. Event data item also creates a metric of event count by name.\r\n */\r\nexport class EventData extends Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\nimport { EventData } from '../Interfaces/Contracts/Generated/EventData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { Util } from '../Util';\r\n\r\nexport class Event extends EventData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n public static dataType = \"EventData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Required,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, properties?: any, measurements?: any) {\r\n\r\n super();\r\n\r\n this.name = DataSanitizer.sanitizeString(logger, name) || Util.NotSpecified;\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n/**\r\n * Stack frame information.\r\n */\r\nexport class StackFrame {\r\n\r\n /**\r\n * Level in the call stack. For the long stacks SDK may not report every function in a call stack.\r\n */\r\n public level: number;\r\n\r\n /**\r\n * Method name.\r\n */\r\n public method: string;\r\n\r\n /**\r\n * Name of the assembly (dll, jar, etc.) containing this function.\r\n */\r\n public assembly: string;\r\n\r\n /**\r\n * File name or URL of the method implementation.\r\n */\r\n public fileName: string;\r\n\r\n /**\r\n * Line number of the code implementation.\r\n */\r\n public line: number;\r\n\r\n constructor() {\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { StackFrame } from './StackFrame';\r\n\r\n/**\r\n * Exception details of the exception in a chain.\r\n */\r\nexport class ExceptionDetails {\r\n\r\n /**\r\n * In case exception is nested (outer exception contains inner one), the id and outerId properties are used to represent the nesting.\r\n */\r\n public id: number;\r\n\r\n /**\r\n * The value of outerId is a reference to an element in ExceptionDetails that represents the outer exception\r\n */\r\n public outerId: number;\r\n\r\n /**\r\n * Exception type name.\r\n */\r\n public typeName: string;\r\n\r\n /**\r\n * Exception message.\r\n */\r\n public message: string;\r\n\r\n /**\r\n * Indicates if full exception stack is provided in the exception. The stack may be trimmed, such as in the case of a StackOverflow exception.\r\n */\r\n public hasFullStack: boolean;\r\n\r\n /**\r\n * Text describing the stack. Either stack or parsedStack should have a value.\r\n */\r\n public stack: string;\r\n\r\n /**\r\n * List of stack frames. Either stack or parsedStack should have a value.\r\n */\r\n public parsedStack: StackFrame[];\r\n\r\n constructor() {\r\n this.hasFullStack = true;\r\n this.parsedStack = [];\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { StackFrame } from '../Interfaces/Contracts/Generated/StackFrame';\r\nimport { ExceptionData } from '../Interfaces/Contracts/Generated/ExceptionData';\r\nimport { ExceptionDetails } from '../Interfaces/Contracts/Generated/ExceptionDetails';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { SeverityLevel } from '../Interfaces/Contracts/Generated/SeverityLevel';\r\nimport { Util } from '../Util';\r\nimport { IDiagnosticLogger, CoreUtils } from '@microsoft/applicationinsights-core-js';\r\nimport { IExceptionInternal, IExceptionDetailsInternal, IExceptionStackFrameInternal } from '../Interfaces/IExceptionTelemetry';\r\n\r\nexport class Exception extends ExceptionData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n public static dataType = \"ExceptionData\";\r\n\r\n public id?: string;\r\n public problemGroup?: string;\r\n public isManual?: boolean;\r\n\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n exceptions: FieldType.Required,\r\n severityLevel: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, exception: Error | IExceptionInternal, properties?: {[key: string]: any}, measurements?: {[key: string]: number}, severityLevel?: SeverityLevel, id?: string) {\r\n super();\r\n\r\n if (exception instanceof Error) {\r\n this.exceptions = [new _ExceptionDetails(logger, exception)];\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n if (severityLevel) { this.severityLevel = severityLevel; }\r\n if (id) { this.id = id; }\r\n } else {\r\n this.exceptions = exception.exceptions;\r\n this.properties = exception.properties;\r\n this.measurements = exception.measurements;\r\n if (exception.severityLevel) { this.severityLevel = exception.severityLevel; }\r\n if (exception.id) { this.id = exception.id; }\r\n if (exception.problemGroup) { this.problemGroup = exception.problemGroup; }\r\n\r\n // bool/int types, use isNullOrUndefined\r\n this.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!CoreUtils.isNullOrUndefined(exception.isManual)) { this.isManual = exception.isManual; }\r\n }\r\n\r\n }\r\n\r\n public static CreateFromInterface(logger: IDiagnosticLogger, exception: IExceptionInternal): Exception {\r\n const exceptions: _ExceptionDetails[] = exception.exceptions\r\n && CoreUtils.arrMap(exception.exceptions, (ex: IExceptionDetailsInternal) => _ExceptionDetails.CreateFromInterface(logger, ex));\r\n const exceptionData = new Exception(logger, {...exception, exceptions});\r\n return exceptionData;\r\n }\r\n\r\n public toInterface(): IExceptionInternal {\r\n const { exceptions, properties, measurements, severityLevel, ver, problemGroup, id, isManual } = this;\r\n\r\n const exceptionDetailsInterface = exceptions instanceof Array\r\n && CoreUtils.arrMap(exceptions, (exception: _ExceptionDetails) => exception.toInterface())\r\n || undefined;\r\n\r\n return {\r\n ver: \"4.0\", // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n exceptions: exceptionDetailsInterface,\r\n severityLevel,\r\n properties,\r\n measurements,\r\n problemGroup,\r\n id,\r\n isManual\r\n } as IExceptionInternal;\r\n }\r\n\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n public static CreateSimpleException(message: string, typeName: string, assembly: string, fileName: string,\r\n details: string, line: number): Exception {\r\n\r\n return {\r\n exceptions: [\r\n {\r\n hasFullStack: true,\r\n message,\r\n stack: details,\r\n typeName\r\n } as ExceptionDetails\r\n ]\r\n } as Exception;\r\n }\r\n}\r\n\r\nexport class _ExceptionDetails extends ExceptionDetails implements ISerializable {\r\n\r\n public aiDataContract = {\r\n id: FieldType.Default,\r\n outerId: FieldType.Default,\r\n typeName: FieldType.Required,\r\n message: FieldType.Required,\r\n hasFullStack: FieldType.Default,\r\n stack: FieldType.Default,\r\n parsedStack: FieldType.Array\r\n };\r\n\r\n constructor(logger: IDiagnosticLogger, exception: Error | IExceptionDetailsInternal) {\r\n super();\r\n\r\n if (exception instanceof Error) {\r\n this.typeName = DataSanitizer.sanitizeString(logger, exception.name) || Util.NotSpecified;\r\n this.message = DataSanitizer.sanitizeMessage(logger, exception.message) || Util.NotSpecified;\r\n const stack = exception.stack;\r\n this.parsedStack = _ExceptionDetails.parseStack(stack);\r\n this.stack = DataSanitizer.sanitizeException(logger, stack);\r\n this.hasFullStack = Util.isArray(this.parsedStack) && this.parsedStack.length > 0;\r\n } else {\r\n this.typeName = exception.typeName;\r\n this.message = exception.message;\r\n this.stack = exception.stack;\r\n this.parsedStack = exception.parsedStack\r\n this.hasFullStack = exception.hasFullStack\r\n }\r\n }\r\n\r\n public toInterface(): IExceptionDetailsInternal {\r\n const parsedStack = this.parsedStack instanceof Array\r\n && CoreUtils.arrMap(this.parsedStack, (frame: _StackFrame) => frame.toInterface());\r\n\r\n const exceptionDetailsInterface: IExceptionDetailsInternal = {\r\n id: this.id,\r\n outerId: this.outerId,\r\n typeName: this.typeName,\r\n message: this.message,\r\n hasFullStack: this.hasFullStack,\r\n stack: this.stack,\r\n parsedStack: parsedStack || undefined\r\n };\r\n\r\n return exceptionDetailsInterface;\r\n }\r\n\r\n public static CreateFromInterface(logger:IDiagnosticLogger, exception: IExceptionDetailsInternal): _ExceptionDetails {\r\n const parsedStack = (exception.parsedStack instanceof Array\r\n &&CoreUtils.arrMap(exception.parsedStack, frame => _StackFrame.CreateFromInterface(frame)))\r\n || exception.parsedStack;\r\n\r\n const exceptionDetails = new _ExceptionDetails(logger, {...exception, parsedStack});\r\n\r\n return exceptionDetails;\r\n }\r\n\r\n private static parseStack(stack?:string): _StackFrame[] {\r\n let parsedStack: _StackFrame[];\r\n if (CoreUtils.isString(stack)) {\r\n const frames = stack.split('\\n');\r\n parsedStack = [];\r\n let level = 0;\r\n\r\n let totalSizeInBytes = 0;\r\n for (let i = 0; i <= frames.length; i++) {\r\n const frame = frames[i];\r\n if (_StackFrame.regex.test(frame)) {\r\n const parsedFrame = new _StackFrame(frames[i], level++);\r\n totalSizeInBytes += parsedFrame.sizeInBytes;\r\n parsedStack.push(parsedFrame);\r\n }\r\n }\r\n\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n const exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes > exceptionParsedStackThreshold) {\r\n let left = 0;\r\n let right = parsedStack.length - 1;\r\n let size = 0;\r\n let acceptedLeft = left;\r\n let acceptedRight = right;\r\n\r\n while (left < right) {\r\n // check size\r\n const lSize = parsedStack[left].sizeInBytes;\r\n const rSize = parsedStack[right].sizeInBytes;\r\n size += lSize + rSize;\r\n\r\n if (size > exceptionParsedStackThreshold) {\r\n\r\n // remove extra frames from the middle\r\n const howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n\r\n return parsedStack;\r\n }\r\n}\r\n\r\nexport class _StackFrame extends StackFrame implements ISerializable {\r\n\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n public static regex = /^([\\s]+at)?(.*?)(\\@|\\s\\(|\\s)([^\\(\\@\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n public static baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n public sizeInBytes = 0;\r\n\r\n public aiDataContract = {\r\n level: FieldType.Required,\r\n method: FieldType.Required,\r\n assembly: FieldType.Default,\r\n fileName: FieldType.Default,\r\n line: FieldType.Default,\r\n };\r\n\r\n constructor(sourceFrame: string | IExceptionStackFrameInternal, level: number) {\r\n super();\r\n\r\n // Not converting this to CoreUtils.isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n const frame: string = sourceFrame;\r\n this.level = level;\r\n this.method = \"\";\r\n this.assembly = Util.trim(frame);\r\n this.fileName = \"\";\r\n this.line = 0;\r\n const matches = frame.match(_StackFrame.regex);\r\n if (matches && matches.length >= 5) {\r\n this.method = Util.trim(matches[2]) || this.method;\r\n this.fileName = Util.trim(matches[4]);\r\n this.line = parseInt(matches[5]) || 0;\r\n }\r\n } else {\r\n this.level = sourceFrame.level;\r\n this.method = sourceFrame.method;\r\n this.assembly = sourceFrame.assembly;\r\n this.fileName = sourceFrame.fileName;\r\n this.line = sourceFrame.line;\r\n this.sizeInBytes = 0;\r\n }\r\n\r\n this.sizeInBytes += this.method.length;\r\n this.sizeInBytes += this.fileName.length;\r\n this.sizeInBytes += this.assembly.length;\r\n\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n this.sizeInBytes += _StackFrame.baseSize;\r\n this.sizeInBytes += this.level.toString().length;\r\n this.sizeInBytes += this.line.toString().length;\r\n }\r\n\r\n public static CreateFromInterface(frame: IExceptionStackFrameInternal) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n }\r\n\r\n public toInterface() {\r\n return {\r\n level: this.level,\r\n method: this.method,\r\n assembly: this.assembly,\r\n fileName: this.fileName,\r\n line: this.line\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { ExceptionDetails } from './ExceptionDetails';\r\nimport { Domain } from './Domain';\r\nimport { SeverityLevel } from './SeverityLevel';\r\n\r\n/**\r\n * An instance of Exception represents a handled or unhandled exception that occurred during execution of the monitored application.\r\n */\r\nexport class ExceptionData extends Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Exception chain - list of inner exceptions.\r\n */\r\n public exceptions: ExceptionDetails[];\r\n\r\n /**\r\n * Severity level. Mostly used to indicate exception severity level when it is reported by logging library.\r\n */\r\n public severityLevel: SeverityLevel;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.exceptions = [];\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Domain } from './Domain';\r\nimport { DataPoint } from './DataPoint';\r\n\r\n/**\r\n * An instance of the Metric item is a list of measurements (single data points) and/or aggregations.\r\n */\r\nexport class MetricData extends Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * List of metrics. Only one metric in the list is currently supported by Application Insights storage. If multiple data points were sent only the first one will be used.\r\n */\r\n public metrics: DataPoint[];\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.metrics = [];\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { DataPointType } from './DataPointType';\r\n\r\n/**\r\n * Metric data single measurement.\r\n */\r\nexport class DataPoint {\r\n\r\n /**\r\n * Name of the metric.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n public kind: DataPointType;\r\n\r\n /**\r\n * Single value for measurement. Sum of individual measurements for the aggregation.\r\n */\r\n public value: number;\r\n\r\n /**\r\n * Metric weight of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public count: number;\r\n\r\n /**\r\n * Minimum value of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public min: number;\r\n\r\n /**\r\n * Maximum value of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public max: number;\r\n\r\n /**\r\n * Standard deviation of the aggregated metric. Should not be set for a measurement.\r\n */\r\n public stdDev: number;\r\n\r\n constructor() {\r\n this.kind = DataPointType.Measurement;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\n\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport enum SeverityLevel {\r\n Verbose = 0,\r\n Information = 1,\r\n Warning = 2,\r\n Error = 3,\r\n Critical = 4,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { DataPoint as AIDataPoint } from '../../Interfaces/Contracts/Generated/DataPoint';\r\nimport { ISerializable } from '../../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../../Enums';\r\n\r\nexport class DataPoint extends AIDataPoint implements ISerializable {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract = {\r\n name: FieldType.Required,\r\n kind: FieldType.Default,\r\n value: FieldType.Required,\r\n count: FieldType.Default,\r\n min: FieldType.Default,\r\n max: FieldType.Default,\r\n stdDev: FieldType.Default\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { MetricData } from '../Interfaces/Contracts/Generated/MetricData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { DataPoint } from './Common/DataPoint';\r\nimport { Util } from '../Util';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class Metric extends MetricData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n public static dataType = \"MetricData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n metrics: FieldType.Required,\r\n properties: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, value: number, count?: number, min?: number, max?: number, properties?: any, measurements?: { [key: string]: number }) {\r\n super();\r\n\r\n const dataPoint = new DataPoint();\r\n dataPoint.count = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint.name = DataSanitizer.sanitizeString(logger, name) || Util.NotSpecified;\r\n dataPoint.value = value;\r\n\r\n this.metrics = [dataPoint];\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { EventData } from './EventData';\r\n\r\n/**\r\n * An instance of PageView represents a generic action on a page like a button click. It is also the base type for PageView.\r\n */\r\nexport class PageViewData extends EventData {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Request URL with all query string parameters\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. For a page view (PageViewData), this is the duration. For a page view with performance information (PageViewPerfData), this is the page load time. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Identifier of a page view instance. Used for correlation between page view and other telemetry items.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { PageViewData } from '../Interfaces/Contracts/Generated/PageViewData';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../Enums';\r\nimport { Util } from '../Util';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class PageView extends PageViewData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n public static dataType = \"PageviewData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n url: FieldType.Default,\r\n duration: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default,\r\n id: FieldType.Default\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name?: string, url?: string, durationMs?: number, properties?: {[key: string]: string}, measurements?: {[key: string]: number}, id?: string) {\r\n super();\r\n\r\n this.id = DataSanitizer.sanitizeId(logger, id);\r\n this.url = DataSanitizer.sanitizeUrl(logger, url);\r\n this.name = DataSanitizer.sanitizeString(logger, name) || Util.NotSpecified;\r\n if (!isNaN(durationMs)) {\r\n this.duration = Util.msToTimeSpan(durationMs);\r\n }\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { Util, AjaxHelper} from '../Util';\r\nimport { RemoteDependencyData as GeneratedRemoteDependencyData } from '../Interfaces/Contracts/Generated/RemoteDependencyData';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class RemoteDependencyData extends GeneratedRemoteDependencyData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n public static dataType = \"RemoteDependencyData\";\r\n\r\n public aiDataContract = {\r\n id: FieldType.Required,\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n resultCode: FieldType.Default,\r\n duration: FieldType.Default,\r\n success: FieldType.Default,\r\n data: FieldType.Default,\r\n target: FieldType.Default,\r\n type: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default,\r\n\r\n kind: FieldType.Default,\r\n value: FieldType.Default,\r\n count: FieldType.Default,\r\n min: FieldType.Default,\r\n max: FieldType.Default,\r\n stdDev: FieldType.Default,\r\n dependencyKind: FieldType.Default,\r\n dependencySource: FieldType.Default,\r\n commandName: FieldType.Default,\r\n dependencyTypeName: FieldType.Default,\r\n }\r\n\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n constructor(logger: IDiagnosticLogger, id: string, absoluteUrl: string, commandName: string, value: number, success: boolean, resultCode: number, method?: string, requestAPI: string = \"Ajax\", correlationContext?: string, properties?: Object, measurements?: Object) {\r\n super();\r\n\r\n this.id = id;\r\n\r\n this.duration = Util.msToTimeSpan(value);\r\n this.success = success;\r\n this.resultCode = resultCode + \"\";\r\n\r\n this.type = DataSanitizer.sanitizeString(logger, requestAPI);\r\n\r\n const dependencyFields = AjaxHelper.ParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n this.data = DataSanitizer.sanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n this.target = DataSanitizer.sanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n this.target = `${this.target} | ${correlationContext}`;\r\n }\r\n this.name = DataSanitizer.sanitizeString(logger, dependencyFields.name);\r\n\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Domain } from './Domain';\r\n\r\n/**\r\n * An instance of Remote Dependency represents an interaction of the monitored component with a remote component/service like SQL or an HTTP endpoint.\r\n */\r\nexport class RemoteDependencyData extends Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Name of the command initiated with this dependency call. Low cardinality value. Examples are stored procedure name and URL path template.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Identifier of a dependency call instance. Used for correlation with the request telemetry item corresponding to this dependency call.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * Result code of a dependency call. Examples are SQL error code and HTTP status code.\r\n */\r\n public resultCode: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Indication of successfull or unsuccessfull call.\r\n */\r\n public success: boolean;\r\n\r\n /**\r\n * Command initiated by this dependency call. Examples are SQL statement and HTTP URL's with all query parameters.\r\n */\r\n public data: string;\r\n\r\n /**\r\n * Target site of a dependency call. Examples are server name, host address.\r\n */\r\n public target: string;\r\n\r\n /**\r\n * Dependency type name. Very low cardinality value for logical grouping of dependencies and interpretation of other fields like commandName and resultCode. Examples are SQL, Azure table, and HTTP.\r\n */\r\n public type: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.success = true;\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { MessageData } from '../Interfaces/Contracts/Generated/MessageData';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { FieldType } from '../Enums';\r\nimport { SeverityLevel } from '../Interfaces/Contracts/Generated/SeverityLevel';\r\nimport { Util } from '../Util';\r\nimport { IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class Trace extends MessageData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n public static dataType = \"MessageData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n message: FieldType.Required,\r\n severityLevel: FieldType.Default,\r\n properties: FieldType.Default\r\n };\r\n\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, message: string, severityLevel?: SeverityLevel, properties?: any, measurements?: { [key: string]: number }) {\r\n super();\r\n message = message || Util.NotSpecified;\r\n this.message = DataSanitizer.sanitizeMessage(logger, message);\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n\r\n if (severityLevel) {\r\n this.severityLevel = severityLevel;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { Domain } from './Domain';\r\nimport { SeverityLevel } from './SeverityLevel';\r\n\r\n/**\r\n * Instances of Message represent printf-like trace statements that are text-searched. Log4Net, NLog and other text-based log file entries are translated into intances of this type. The message does not have measurements.\r\n */\r\nexport class MessageData extends Domain {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Trace message\r\n */\r\n public message: string;\r\n\r\n /**\r\n * Trace severity level.\r\n */\r\n public severityLevel: SeverityLevel;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { PageViewPerfData } from '../Interfaces/Contracts/Generated/PageViewPerfData';\r\nimport { FieldType } from '../Enums';\r\nimport { ISerializable } from '../Interfaces/Telemetry/ISerializable';\r\nimport { DataSanitizer } from './Common/DataSanitizer';\r\nimport { Util } from '../Util';\r\nimport { IDiagnosticLogger, _InternalMessageId, LoggingSeverity } from '@microsoft/applicationinsights-core-js';\r\nimport { IPageViewPerformanceTelemetry } from '../Interfaces/IPageViewPerformanceTelemetry';\r\n\r\n\r\nexport class PageViewPerformance extends PageViewPerfData implements ISerializable {\r\n\r\n public static envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n public static dataType = \"PageviewPerformanceData\";\r\n\r\n public aiDataContract = {\r\n ver: FieldType.Required,\r\n name: FieldType.Default,\r\n url: FieldType.Default,\r\n duration: FieldType.Default,\r\n perfTotal: FieldType.Default,\r\n networkConnect: FieldType.Default,\r\n sentRequest: FieldType.Default,\r\n receivedResponse: FieldType.Default,\r\n domProcessing: FieldType.Default,\r\n properties: FieldType.Default,\r\n measurements: FieldType.Default\r\n };\r\n\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n constructor(logger: IDiagnosticLogger, name: string, url: string, unused: number, properties?: { [key: string]: string }, measurements?: { [key: string]: number }, cs4BaseData?: IPageViewPerformanceTelemetry) {\r\n super();\r\n this.url = DataSanitizer.sanitizeUrl(logger, url);\r\n this.name = DataSanitizer.sanitizeString(logger, name) || Util.NotSpecified;\r\n\r\n this.properties = DataSanitizer.sanitizeProperties(logger, properties);\r\n this.measurements = DataSanitizer.sanitizeMeasurements(logger, measurements);\r\n\r\n if (cs4BaseData) {\r\n this.domProcessing = cs4BaseData.domProcessing;\r\n this.duration = cs4BaseData.duration\r\n this.networkConnect = cs4BaseData.networkConnect;\r\n this.perfTotal = cs4BaseData.perfTotal;\r\n this.receivedResponse = cs4BaseData.receivedResponse;\r\n this.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nimport { PageViewData } from './PageViewData';\r\n\r\n/**\r\n * An instance of PageViewPerf represents: a page view with no performance data, a page view with performance data, or just the performance data of an earlier page request.\r\n */\r\nexport class PageViewPerfData extends PageViewData {\r\n\r\n /**\r\n * Schema version\r\n */\r\n public ver: number;\r\n\r\n /**\r\n * Request URL with all query string parameters\r\n */\r\n public url: string;\r\n\r\n /**\r\n * Performance total in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public perfTotal: string;\r\n\r\n /**\r\n * Event name. Keep it low cardinality to allow proper grouping and useful metrics.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Request duration in format: DD.HH:MM:SS.MMMMMM. For a page view (PageViewData), this is the duration. For a page view with performance information (PageViewPerfData), this is the page load time. Must be less than 1000 days.\r\n */\r\n public duration: string;\r\n\r\n /**\r\n * Network connection time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public networkConnect: string;\r\n\r\n /**\r\n * Sent request time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public sentRequest: string;\r\n\r\n /**\r\n * Received response time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public receivedResponse: string;\r\n\r\n /**\r\n * DOM processing time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff\r\n */\r\n public domProcessing: string;\r\n\r\n /**\r\n * Collection of custom properties.\r\n */\r\n public properties: any;\r\n\r\n /**\r\n * Collection of custom measurements.\r\n */\r\n public measurements: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.ver = 2;\r\n this.properties = {};\r\n this.measurements = {};\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Data as AIData } from '../../Interfaces/Contracts/Generated/Data';\r\nimport { ISerializable } from '../../Interfaces/Telemetry/ISerializable';\r\nimport { FieldType } from '../../Enums';\r\n\r\nexport class Data extends AIData implements ISerializable {\r\n\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n public aiDataContract = {\r\n baseType: FieldType.Required,\r\n baseData: FieldType.Required\r\n }\r\n\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n constructor(baseType: string, data: TDomain) {\r\n super();\r\n\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { IConfiguration, CoreUtils } from '@microsoft/applicationinsights-core-js';\r\nimport { DistributedTracingModes } from '../Enums';\r\n\r\n/**\r\n * @description Configuration settings for how telemetry is sent\r\n * @export\r\n * @interface IConfig\r\n */\r\nexport interface IConfig {\r\n\r\n /**\r\n * @description\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n emitLineDelimitedJson?: boolean;\r\n\r\n /**\r\n * @description An optional account id, if your app groups users into accounts. No spaces, commas, semicolons, equals, or vertical bars.\r\n * @type {string}\r\n * @memberof IConfig\r\n */\r\n accountId?: string;\r\n\r\n /**\r\n * @description A session is logged if the user is inactive for this amount of time in milliseconds. Default 30 mins.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 30*60*1000\r\n */\r\n sessionRenewalMs?: number;\r\n\r\n /**\r\n * @description A session is logged if it has continued for this amount of time in milliseconds. Default 24h.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 24*60*60*1000\r\n */\r\n sessionExpirationMs?: number;\r\n\r\n /**\r\n * @description Max size of telemetry batch. If batch exceeds limit, it is sent and a new batch is started\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 100000\r\n */\r\n maxBatchSizeInBytes?: number;\r\n\r\n /**\r\n * @description How long to batch telemetry for before sending (milliseconds)\r\n * @type {number}\r\n * @memberof IConfig\r\n * @default 15 seconds\r\n */\r\n maxBatchInterval?: number;\r\n\r\n /**\r\n * @description If true, debugging data is thrown as an exception by the logger. Default false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableDebug?: boolean;\r\n\r\n /**\r\n * @description If true, exceptions are not autocollected. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableExceptionTracking?: boolean;\r\n\r\n /**\r\n * @description If true, telemetry is not collected or sent. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableTelemetry?: boolean;\r\n\r\n /**\r\n * @description Percentage of events that will be sent. Default is 100, meaning all events are sent.\r\n * @type {number}\r\n * @memberof IConfig\r\n * @defaultValue 100\r\n */\r\n samplingPercentage?: number;\r\n\r\n /**\r\n * @description If true, on a pageview,the previous instrumented page's view time is tracked and sent as telemetry and a new timer is started for the current pageview. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoTrackPageVisitTime?: boolean;\r\n\r\n /**\r\n * @description Automatically track route changes in Single Page Applications (SPA). If true, each route change will send a new Pageview to Application Insights.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n enableAutoRouteTracking?: boolean;\r\n\r\n /**\r\n * @description If true, Ajax calls are not autocollected. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableAjaxTracking?: boolean;\r\n\r\n /**\r\n * @description If true, Fetch requests are not autocollected. Default is true.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n disableFetchTracking?: boolean;\r\n\r\n /**\r\n * @description If true, default behavior of trackPageView is changed to record end of page view duration interval when trackPageView is called. If false and no custom duration is provided to trackPageView, the page view performance is calculated using the navigation timing API. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n overridePageViewDuration?: boolean;\r\n\r\n /**\r\n * @description Default 500 - controls how many ajax calls will be monitored per page view. Set to -1 to monitor all (unlimited) ajax calls on the page.\r\n * @type {number}\r\n * @memberof IConfig\r\n */\r\n maxAjaxCallsPerView?: number;\r\n\r\n /**\r\n * @ignore\r\n * @description If false, internal telemetry sender buffers will be checked at startup for items not yet sent. Default is true\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n disableDataLossAnalysis?: boolean;\r\n\r\n /**\r\n * @description If false, the SDK will add two headers ('Request-Id' and 'Request-Context') to all dependency requests to correlate them with corresponding requests on the server side. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n disableCorrelationHeaders?: boolean;\r\n\r\n /**\r\n * @description Sets the distributed tracing mode. If AI_AND_W3C mode or W3C mode is set, W3C trace context headers (traceparent/tracestate) will be generated and included in all outgoing requests. \r\n * AI_AND_W3C is provided for back-compatibility with any legacy Application Insights instrumented services\r\n * @type {enum}\r\n * @memberof IConfig\r\n * @defaultValue AI\r\n */\r\n distributedTracingMode?: DistributedTracingModes;\r\n\r\n /**\r\n * @description Disable correlation headers for specific domain\r\n * @type {string[]}\r\n * @memberof IConfig\r\n */\r\n correlationHeaderExcludedDomains?: string[];\r\n\r\n /**\r\n * @description Default false. If true, flush method will not be called when onBeforeUnload event triggers.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n disableFlushOnBeforeUnload?: boolean;\r\n\r\n /**\r\n * @description Default value of {@link #disableFlushOnBeforeUnload}. If true, flush method will not be called when onUnload event triggers.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n disableFlushOnUnload?: boolean;\r\n\r\n /**\r\n * @description If true, the buffer with all unsent telemetry is stored in session storage. The buffer is restored on page load. Default is true.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n enableSessionStorageBuffer?: boolean;\r\n\r\n /**\r\n * @description If true, the SDK will not store or read any data from cookies. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isCookieUseDisabled?: boolean;\r\n\r\n /**\r\n * @description Custom cookie domain. This is helpful if you want to share Application Insights cookies across subdomains.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue \"\"\r\n */\r\n cookieDomain?: string;\r\n\r\n /** \r\n * Default false. If false, retry on 206 (partial success), 408 (timeout), 429 (too many requests), 500 (internal server error), 503 (service unavailable), and 0 (offline, only if detected)\r\n * @description\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isRetryDisabled?: boolean;\r\n\r\n /**\r\n * @deprecated Used when initizialing from snippet only.\r\n * @description The url from where the JS SDK will be downloaded. Default 'https://az416426.vo.msecnd.net/scripts/beta/ai.1.js'\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue \"https://az416426.vo.msecnd.net/scripts/beta/ai.1.js\"\r\n */\r\n url?: string;\r\n\r\n /**\r\n * @description If true, the SDK will not store or read any data from local and session storage. Default is false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isStorageUseDisabled?: boolean;\r\n\r\n /**\r\n * @description If false, the SDK will send all telemetry using the [Beacon API](https://www.w3.org/TR/beacon)\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue true\r\n */\r\n isBeaconApiDisabled?: boolean;\r\n\r\n /**\r\n * @description Sets the sdk extension name. Only alphabetic characters are allowed. The extension name is added as a prefix to the 'ai.internal.sdkVersion' tag (e.g. 'ext_javascript:2.0.0'). Default is null.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n sdkExtension?: string;\r\n\r\n /**\r\n * @description Default is false. If true, the SDK will track all [Browser Link](https://docs.microsoft.com/en-us/aspnet/core/client-side/using-browserlink) requests.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n isBrowserLinkTrackingEnabled?: boolean;\r\n\r\n /**\r\n * @description AppId is used for the correlation between AJAX dependencies happening on the client-side with the server-side requets. When Beacon API is enabled, it cannot be used automatically, but can be set manually in the configuration. Default is null\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n appId?: string;\r\n\r\n /**\r\n * @description If true, the SDK will add two headers ('Request-Id' and 'Request-Context') to all CORS requests to correlate outgoing AJAX dependencies with corresponding requests on the server side. Default is false\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableCorsCorrelation?: boolean;\r\n\r\n /**\r\n * @description An optional value that will be used as name postfix for localStorage and cookie name.\r\n * @type {string}\r\n * @memberof IConfig\r\n * @defaultValue null\r\n */\r\n namePrefix?: string;\r\n\r\n /**\r\n * @description An optional value that will track Request Header through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableRequestHeaderTracking?: boolean;\r\n\r\n /**\r\n * @description An optional value that will track Response Header through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableResponseHeaderTracking?: boolean;\r\n\r\n /**\r\n * @description An optional value that will track Response Error data through trackDependency function.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableAjaxErrorStatusText?: boolean;\r\n\r\n /**\r\n * Flag to enable looking up and including additional browser window.performance timings\r\n * in the reported ajax (XHR and fetch) reported metrics. \r\n * Defaults to false.\r\n */\r\n enableAjaxPerfTracking?:boolean;\r\n\r\n /**\r\n * The maximum number of times to look for the window.performance timings (if available), this \r\n * is required as not all browsers populate the window.performance before reporting the \r\n * end of the XHR request and for fetch requests this is added after its complete\r\n * Defaults to 3\r\n */\r\n maxAjaxPerfLookupAttempts?: number;\r\n\r\n /**\r\n * The amount of time to wait before re-attempting to find the windows.performance timings\r\n * for an ajax request, time is in milliseconds and is passed directly to setTimeout()\r\n * Defaults to 25.\r\n */\r\n ajaxPerfLookupDelay?: number;\r\n \r\n /**\r\n * @description Default false. when tab is closed, the SDK will send all remaining telemetry using the [Beacon API](https://www.w3.org/TR/beacon)\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n onunloadDisableBeacon?: boolean;\r\n\r\n // Internal\r\n\r\n /**\r\n * @ignore\r\n * @description Internal only\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoExceptionInstrumented?: boolean;\r\n correlationHeaderDomains?: string[]\r\n\r\n /**\r\n * @ignore\r\n * @description Internal only\r\n * @type {boolean}\r\n * @memberof IConfig\r\n */\r\n autoUnhandledPromiseInstrumented?: boolean;\r\n\r\n /**\r\n * @description Default false. Define whether to track unhandled promise rejections and report as JS errors. \r\n * When disableExceptionTracking is enabled (dont track exceptions) this value will be false.\r\n * @type {boolean}\r\n * @memberof IConfig\r\n * @defaultValue false\r\n */\r\n enableUnhandledPromiseRejectionTracking?: boolean;\r\n}\r\n\r\nexport class ConfigurationManager {\r\n public static getConfig(config: IConfiguration & IConfig, field: string, identifier?: string, defaultValue: number | string | boolean = false): number | string | boolean {\r\n let configValue;\r\n if (identifier && config.extensionConfig && config.extensionConfig[identifier] && !CoreUtils.isNullOrUndefined(config.extensionConfig[identifier][field])) {\r\n configValue = config.extensionConfig[identifier][field];\r\n } else {\r\n configValue = config[field];\r\n }\r\n\r\n return !CoreUtils.isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\n// THIS FILE WAS AUTOGENERATED\r\nexport class ContextTagKeys {\r\n\r\n /**\r\n * Application version. Information in the application context fields is always about the application that is sending the telemetry.\r\n */\r\n public applicationVersion: string;\r\n\r\n /**\r\n * Application build.\r\n */\r\n public applicationBuild: string;\r\n\r\n /**\r\n * Application type id.\r\n */\r\n public applicationTypeId: string;\r\n\r\n /**\r\n * Application id.\r\n */\r\n public applicationId: string;\r\n\r\n /**\r\n * Application layer.\r\n */\r\n public applicationLayer: string;\r\n\r\n /**\r\n * Unique client device id. Computer name in most cases.\r\n */\r\n public deviceId: string;\r\n public deviceIp: string;\r\n public deviceLanguage: string;\r\n\r\n /**\r\n * Device locale using - pattern, following RFC 5646. Example 'en-US'.\r\n */\r\n public deviceLocale: string;\r\n\r\n /**\r\n * Model of the device the end user of the application is using. Used for client scenarios. If this field is empty then it is derived from the user agent.\r\n */\r\n public deviceModel: string;\r\n public deviceFriendlyName: string;\r\n public deviceNetwork: string;\r\n public deviceNetworkName: string;\r\n\r\n /**\r\n * Client device OEM name taken from the browser.\r\n */\r\n public deviceOEMName: string;\r\n public deviceOS: string;\r\n\r\n /**\r\n * Operating system name and version of the device the end user of the application is using. If this field is empty then it is derived from the user agent. Example 'Windows 10 Pro 10.0.10586.0'\r\n */\r\n public deviceOSVersion: string;\r\n\r\n /**\r\n * Name of the instance where application is running. Computer name for on-premisis, instance name for Azure.\r\n */\r\n public deviceRoleInstance: string;\r\n\r\n /**\r\n * Name of the role application is part of. Maps directly to the role name in azure.\r\n */\r\n public deviceRoleName: string;\r\n public deviceScreenResolution: string;\r\n\r\n /**\r\n * The type of the device the end user of the application is using. Used primarily to distinguish JavaScript telemetry from server side telemetry. Examples: 'PC', 'Phone', 'Browser'. 'PC' is the default value.\r\n */\r\n public deviceType: string;\r\n public deviceMachineName: string;\r\n public deviceVMName: string;\r\n public deviceBrowser: string;\r\n\r\n /**\r\n * The browser name and version as reported by the browser.\r\n */\r\n public deviceBrowserVersion: string;\r\n\r\n /**\r\n * The IP address of the client device. IPv4 and IPv6 are supported. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n public locationIp: string;\r\n\r\n /**\r\n * The country of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n public locationCountry: string;\r\n\r\n /**\r\n * The province/state of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n public locationProvince: string;\r\n\r\n /**\r\n * The city of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.\r\n */\r\n public locationCity: string;\r\n\r\n /**\r\n * A unique identifier for the operation instance. The operation.id is created by either a request or a page view. All other telemetry sets this to the value for the containing request or page view. Operation.id is used for finding all the telemetry items for a specific operation instance.\r\n */\r\n public operationId: string;\r\n\r\n /**\r\n * The name (group) of the operation. The operation.name is created by either a request or a page view. All other telemetry items set this to the value for the containing request or page view. Operation.name is used for finding all the telemetry items for a group of operations (i.e. 'GET Home/Index').\r\n */\r\n public operationName: string;\r\n\r\n /**\r\n * The unique identifier of the telemetry item's immediate parent.\r\n */\r\n public operationParentId: string;\r\n public operationRootId: string;\r\n\r\n /**\r\n * Name of synthetic source. Some telemetry from the application may represent a synthetic traffic. It may be web crawler indexing the web site, site availability tests or traces from diagnostic libraries like Application Insights SDK itself.\r\n */\r\n public operationSyntheticSource: string;\r\n\r\n /**\r\n * The correlation vector is a light weight vector clock which can be used to identify and order related events across clients and services.\r\n */\r\n public operationCorrelationVector: string;\r\n\r\n /**\r\n * Session ID - the instance of the user's interaction with the app. Information in the session context fields is always about the end user. When telemetry is sent from a service, the session context is about the user that initiated the operation in the service.\r\n */\r\n public sessionId: string;\r\n\r\n /**\r\n * Boolean value indicating whether the session identified by ai.session.id is first for the user or not.\r\n */\r\n public sessionIsFirst: string;\r\n public sessionIsNew: string;\r\n public userAccountAcquisitionDate: string;\r\n\r\n /**\r\n * In multi-tenant applications this is the account ID or name which the user is acting with. Examples may be subscription ID for Azure portal or blog name blogging platform.\r\n */\r\n public userAccountId: string;\r\n\r\n /**\r\n * The browser's user agent string as reported by the browser. This property will be used to extract informaiton regarding the customer's browser but will not be stored. Use custom properties to store the original user agent.\r\n */\r\n public userAgent: string;\r\n\r\n /**\r\n * Anonymous user id. Represents the end user of the application. When telemetry is sent from a service, the user context is about the user that initiated the operation in the service.\r\n */\r\n public userId: string;\r\n\r\n /**\r\n * Store region for UWP applications.\r\n */\r\n public userStoreRegion: string;\r\n\r\n /**\r\n * Authenticated user id. The opposite of ai.user.id, this represents the user with a friendly name. Since it's PII information it is not collected by default by most SDKs.\r\n */\r\n public userAuthUserId: string;\r\n public userAnonymousUserAcquisitionDate: string;\r\n public userAuthenticatedUserAcquisitionDate: string;\r\n public cloudName: string;\r\n\r\n /**\r\n * Name of the role the application is a part of. Maps directly to the role name in azure.\r\n */\r\n public cloudRole: string;\r\n public cloudRoleVer: string;\r\n\r\n /**\r\n * Name of the instance where the application is running. Computer name for on-premisis, instance name for Azure.\r\n */\r\n public cloudRoleInstance: string;\r\n public cloudEnvironment: string;\r\n public cloudLocation: string;\r\n public cloudDeploymentUnit: string;\r\n\r\n /**\r\n * SDK version. See https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification for information.\r\n */\r\n public internalSdkVersion: string;\r\n\r\n /**\r\n * Agent version. Used to indicate the version of StatusMonitor installed on the computer if it is used for data collection.\r\n */\r\n public internalAgentVersion: string;\r\n\r\n /**\r\n * This is the node name used for billing purposes. Use it to override the standard detection of nodes.\r\n */\r\n public internalNodeName: string;\r\n\r\n constructor() {\r\n this.applicationVersion = \"ai.application.ver\";\r\n this.applicationBuild = \"ai.application.build\";\r\n this.applicationTypeId = \"ai.application.typeId\";\r\n this.applicationId = \"ai.application.applicationId\";\r\n this.applicationLayer = \"ai.application.layer\";\r\n this.deviceId = \"ai.device.id\";\r\n this.deviceIp = \"ai.device.ip\";\r\n this.deviceLanguage = \"ai.device.language\";\r\n this.deviceLocale = \"ai.device.locale\";\r\n this.deviceModel = \"ai.device.model\";\r\n this.deviceFriendlyName = \"ai.device.friendlyName\";\r\n this.deviceNetwork = \"ai.device.network\";\r\n this.deviceNetworkName = \"ai.device.networkName\";\r\n this.deviceOEMName = \"ai.device.oemName\";\r\n this.deviceOS = \"ai.device.os\";\r\n this.deviceOSVersion = \"ai.device.osVersion\";\r\n this.deviceRoleInstance = \"ai.device.roleInstance\";\r\n this.deviceRoleName = \"ai.device.roleName\";\r\n this.deviceScreenResolution = \"ai.device.screenResolution\";\r\n this.deviceType = \"ai.device.type\";\r\n this.deviceMachineName = \"ai.device.machineName\";\r\n this.deviceVMName = \"ai.device.vmName\";\r\n this.deviceBrowser = \"ai.device.browser\";\r\n this.deviceBrowserVersion = \"ai.device.browserVersion\";\r\n this.locationIp = \"ai.location.ip\";\r\n this.locationCountry = \"ai.location.country\";\r\n this.locationProvince = \"ai.location.province\";\r\n this.locationCity = \"ai.location.city\";\r\n this.operationId = \"ai.operation.id\";\r\n this.operationName = \"ai.operation.name\";\r\n this.operationParentId = \"ai.operation.parentId\";\r\n this.operationRootId = \"ai.operation.rootId\";\r\n this.operationSyntheticSource = \"ai.operation.syntheticSource\";\r\n this.operationCorrelationVector = \"ai.operation.correlationVector\";\r\n\r\n this.sessionId = \"ai.session.id\";\r\n this.sessionIsFirst = \"ai.session.isFirst\";\r\n this.sessionIsNew = \"ai.session.isNew\";\r\n this.userAccountAcquisitionDate = \"ai.user.accountAcquisitionDate\";\r\n this.userAccountId = \"ai.user.accountId\";\r\n this.userAgent = \"ai.user.userAgent\";\r\n this.userId = \"ai.user.id\";\r\n this.userStoreRegion = \"ai.user.storeRegion\";\r\n this.userAuthUserId = \"ai.user.authUserId\";\r\n this.userAnonymousUserAcquisitionDate = \"ai.user.anonUserAcquisitionDate\";\r\n this.userAuthenticatedUserAcquisitionDate = \"ai.user.authUserAcquisitionDate\";\r\n\r\n this.cloudName = \"ai.cloud.name\";\r\n this.cloudRole = \"ai.cloud.role\";\r\n this.cloudRoleVer = \"ai.cloud.roleVer\";\r\n this.cloudRoleInstance = \"ai.cloud.roleInstance\";\r\n this.cloudEnvironment = \"ai.cloud.environment\";\r\n this.cloudLocation = \"ai.cloud.location\";\r\n this.cloudDeploymentUnit = \"ai.cloud.deploymentUnit\";\r\n this.internalNodeName = \"ai.internal.nodeName\";\r\n this.internalSdkVersion = \"ai.internal.sdkVersion\";\r\n this.internalAgentVersion = \"ai.internal.agentVersion\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Util } from \"./Util\";\r\nimport { DataSanitizer } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { ITelemetryItem, CoreUtils, IDiagnosticLogger } from \"@microsoft/applicationinsights-core-js\";\r\n\r\nexport class TelemetryItemCreator {\r\n\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n\r\n public static create(item: T,\r\n baseType: string,\r\n envelopeName: string,\r\n logger: IDiagnosticLogger,\r\n customProperties?: { [key: string]: any },\r\n systemProperties?: { [key: string]: any }): ITelemetryItem {\r\n\r\n envelopeName = DataSanitizer.sanitizeString(logger, envelopeName) || Util.NotSpecified;\r\n\r\n if (CoreUtils.isNullOrUndefined(item) ||\r\n CoreUtils.isNullOrUndefined(baseType) ||\r\n CoreUtils.isNullOrUndefined(envelopeName)) {\r\n throw Error(\"Input doesn't contain all required fields\");\r\n }\r\n\r\n const telemetryItem: ITelemetryItem = {\r\n name: envelopeName,\r\n time: CoreUtils.toISOString(new Date()),\r\n iKey: \"\", // this will be set in TelemetryContext\r\n ext: systemProperties ? systemProperties : {}, // part A\r\n tags: [],\r\n data: {\r\n },\r\n baseType,\r\n baseData: item // Part B\r\n };\r\n\r\n // Part C\r\n if (!CoreUtils.isNullOrUndefined(customProperties)) {\r\n for (const prop in customProperties) {\r\n if (customProperties.hasOwnProperty(prop)) {\r\n telemetryItem.data[prop] = customProperties[prop];\r\n }\r\n }\r\n }\r\n\r\n return telemetryItem;\r\n }\r\n}\r\n","import { ContextTagKeys } from \"./Contracts/Generated/ContextTagKeys\";\r\n\r\nexport class Extensions {\r\n public static UserExt = \"user\";\r\n public static DeviceExt = \"device\";\r\n public static TraceExt = \"trace\";\r\n public static WebExt = \"web\";\r\n public static AppExt = \"app\";\r\n public static OSExt = \"os\";\r\n public static SessionExt = \"ses\";\r\n public static SDKExt = \"sdk\";\r\n}\r\n\r\nexport let CtxTagKeys = new ContextTagKeys();","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport { Util, CorrelationIdHelper, UrlHelper, DateTimeUtils } from './Util';\r\nexport { ConnectionStringParser } from './ConnectionStringParser';\r\nexport { FieldType } from './Enums';\r\nexport { RequestHeaders } from './RequestResponseHeaders';\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT } from './Constants';\r\nexport { Data as AIData } from './Interfaces/Contracts/Generated/Data';\r\nexport { Base as AIBase } from './Interfaces/Contracts/Generated/Base';\r\nexport { ISerializable } from './Interfaces/Telemetry/ISerializable';\r\nexport { IEnvelope } from './Interfaces/Telemetry/IEnvelope';\r\nexport { Envelope } from './Telemetry/Common/Envelope';\r\nexport { Event } from './Telemetry/Event';\r\nexport { Exception } from './Telemetry/Exception';\r\nexport { Metric } from './Telemetry/Metric';\r\nexport { PageView } from './Telemetry/PageView';\r\nexport { PageViewData } from './Interfaces/Contracts/Generated/PageViewData';\r\nexport { RemoteDependencyData } from './Telemetry/RemoteDependencyData';\r\nexport { IEventTelemetry } from './Interfaces/IEventTelemetry';\r\nexport { ITraceTelemetry } from './Interfaces/ITraceTelemetry';\r\nexport { IMetricTelemetry } from './Interfaces/IMetricTelemetry';\r\nexport { IDependencyTelemetry } from './Interfaces/IDependencyTelemetry';\r\nexport { IExceptionTelemetry, IAutoExceptionTelemetry, IExceptionInternal } from './Interfaces/IExceptionTelemetry';\r\nexport { IPageViewTelemetry, IPageViewTelemetryInternal } from './Interfaces/IPageViewTelemetry';\r\nexport { IPageViewPerformanceTelemetry, IPageViewPerformanceTelemetryInternal } from './Interfaces/IPageViewPerformanceTelemetry';\r\nexport { Trace } from './Telemetry/Trace';\r\nexport { PageViewPerformance } from './Telemetry/PageViewPerformance';\r\nexport { Data } from './Telemetry/Common/Data';\r\nexport { SeverityLevel } from './Interfaces/Contracts/Generated/SeverityLevel';\r\nexport { IConfig, ConfigurationManager } from './Interfaces/IConfig';\r\nexport { IChannelControlsAI } from './Interfaces/IChannelControlsAI';\r\nexport { ContextTagKeys } from './Interfaces/Contracts/Generated/ContextTagKeys';\r\nexport { DataSanitizer } from './Telemetry/Common/DataSanitizer';\r\nexport { TelemetryItemCreator } from './TelemetryItemCreator';\r\nexport { ICorrelationConfig } from './Interfaces/ICorrelationConfig';\r\nexport { IAppInsights } from './Interfaces/IAppInsights';\r\nexport { IWeb } from './Interfaces/Context/IWeb';\r\nexport { CtxTagKeys, Extensions } from './Interfaces/PartAExtensions';\r\nexport { ISession } from './Interfaces/Context/ISession';\r\nexport { ITelemetryContext } from './Interfaces/ITelemetryContext';\r\nexport { IApplication } from './Interfaces/Context/IApplication';\r\nexport { IDevice } from './Interfaces/Context/IDevice';\r\nexport { IInternal } from './Interfaces/Context/IInternal';\r\nexport { ILocation } from './Interfaces/Context/ILocation';\r\nexport { ISample } from './Interfaces/Context/ISample';\r\nexport { IOperatingSystem } from './Interfaces/Context/IOperatingSystem';\r\nexport { IPropertiesPlugin } from './Interfaces/IPropertiesPlugin';\r\nexport { IUser, IUserContext } from './Interfaces/Context/IUser';\r\nexport { ITelemetryTrace, ITraceState } from './Interfaces/Context/ITelemetryTrace';\r\nexport { DistributedTracingModes } from './Enums';\r\nexport const PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport const BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport const AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Internal Global used to generate a unique dynamic class name, every new class will increase this value\r\n * @ignore\r\n */\r\nvar _dynamicNames = 0;\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Object[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Checks if the passed of value is a function.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n * @ignore\r\n */\r\nfunction _isFunction(value) {\r\n return typeof value === strFunction;\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Object[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[Prototype] || target[Constructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototpe or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && _isFunction(target[funcName]) && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n for (var name in thisTarget) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for pasing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n }\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs) {\r\n function _instFuncProxy(target, theFunc) {\r\n return function () {\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n for (var name in instFuncs) {\r\n // Create an instance callback for pasing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs[name]);\r\n }\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n for (var name in baseProto) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for pasing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto[name]);\r\n }\r\n }\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto The class prototype\r\n * @param className The instance classname\r\n * @param target The target instance\r\n * @param baseInstFuncs The base instance functions\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n var _this = this;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (_this && _hasOwnProperty(proto, DynClassName)) {\r\n var instFunc = ((_this[DynInstFuncTable] || {})[proto[DynClassName]] || {})[funcName];\r\n if (instFunc) {\r\n // Used the instance function property\r\n return instFunc.apply(_this, arguments);\r\n }\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === dynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (!_isFunction(protoFunc)) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc.apply(_this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n for (var name in target) {\r\n // Only add overriden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype heirarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whther the passed prototype instance is in the heirarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass This is the current class instance which contains the prototype for the current class\r\n * @param target The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc The callback function (closure) that will create the dynamic function\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] is not in class heirarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _dynamicNames;\r\n _dynamicNames++;\r\n classProto[DynClassName] = className;\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overriden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Populate the Prototype for any overidden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs);\r\n}\r\n//# sourceMappingURL=DynamicProto.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { DateTimeUtils, Util } from '@microsoft/applicationinsights-common';\r\nimport { CoreUtils, LoggingSeverity, _InternalMessageId, getDocument, getLocation } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var arrForEach = CoreUtils.arrForEach;\r\n var isNullOrUndefined = CoreUtils.isNullOrUndefined;\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels() {\r\n if (core) {\r\n arrForEach(core.getTransmissionControls(), function (queues) {\r\n arrForEach(queues, function (q) { return q.flush(true); });\r\n });\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue.length === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels();\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self.trackPageView = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1.href || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager.isPerformanceTimingSupported()) {\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.NavigationTimingNotSupported, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager.getPerformanceTiming().navigationStart;\r\n customDuration = DateTimeUtils.GetDuration(start, +new Date);\r\n if (!pageViewPerformanceManager.shouldCollectDuration(customDuration)) {\r\n customDuration = undefined;\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties.duration)) {\r\n duration = customProperties.duration;\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[\"duration\"] = customDuration;\r\n }\r\n // case 2\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n _flushChannels();\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager.isPerformanceTimingDataReady()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[\"duration\"] = customDuration;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = pageViewPerformance.durationMs;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (DateTimeUtils.GetDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[\"duration\"] = maxDurationLimit;\r\n appInsights.sendPageViewInternal(pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailedCalc, \"trackPageView failed on page load calculation: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n });\r\n }\r\n /**\r\n * Currently supported cases:\r\n * 1) (default case) track page view called with default parameters, overridePageViewDuration = false. Page view is sent with page view performance when navigation timing data is available.\r\n * a. If navigation timing is not supported then page view is sent right away with undefined duration. Page view performance is not sent.\r\n * 2) overridePageViewDuration = true, custom duration provided. Custom duration is used, page view sends right away.\r\n * 3) overridePageViewDuration = true, custom duration NOT provided. Page view is sent right away, duration is time spent from page load till now (or undefined if navigation timing is not supported).\r\n * 4) overridePageViewDuration = false, custom duration is provided. Page view is sent right away with custom duration.\r\n *\r\n * In all cases page view performance is sent once (only for the 1st call of trackPageView), or not sent if navigation timing is not supported.\r\n */\r\n PageViewManager.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Util } from '@microsoft/applicationinsights-common';\r\nimport { hasJSON, getJSON } from '@microsoft/applicationinsights-core-js';\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n this.prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n this.pageVisitTimeTrackingHandler = pageVisitTimeTrackingHandler;\r\n this._logger = logger;\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = this.restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n this.pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Auto track page visit time failed, metric will not be collected: \" + Util.dump(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.restartPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n var prevPageVisitData = this.stopPageVisitTimer();\r\n this.startPageVisitTimer(pageName, pageUrl);\r\n return prevPageVisitData;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Call to restart failed: \" + Util.dump(e));\r\n return null;\r\n }\r\n };\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n PageVisitTimeManager.prototype.startPageVisitTimer = function (pageName, pageUrl) {\r\n try {\r\n if (Util.canUseSessionStorage()) {\r\n if (Util.getSessionStorage(this._logger, this.prevPageVisitDataKeyName) != null) {\r\n throw new Error(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n Util.setSessionStorage(this._logger, this.prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n this._logger.warnToConsole(\"Call to start failed: \" + Util.dump(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n PageVisitTimeManager.prototype.stopPageVisitTimer = function () {\r\n try {\r\n if (Util.canUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = Date.now();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = Util.getSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n var prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData.pageVisitStartTime;\r\n // Remove data from storage since we already used it\r\n Util.removeSessionStorage(this._logger, this.prevPageVisitDataKeyName);\r\n // Return page visit data\r\n return prevPageVisitData;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n this._logger.warnToConsole(\"Stop page visit timer failed: \" + Util.dump(e));\r\n return null;\r\n }\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this.pageVisitStartTime = Date.now();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Util, DateTimeUtils } from '@microsoft/applicationinsights-common';\r\nimport { LoggingSeverity, _InternalMessageId, getNavigator, getPerformance } from '@microsoft/applicationinsights-core-js';\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n this.MAX_DURATION_ALLOWED = 3600000; // 1h\r\n if (core) {\r\n this._logger = core.logger;\r\n }\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n */\r\n var navigationTiming = this.getPerformanceNavigationTiming();\r\n var timing = this.getPerformanceTiming();\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n var total = navigationTiming.duration;\r\n var network = DateTimeUtils.GetDuration(navigationTiming.startTime, navigationTiming.connectEnd);\r\n var request = DateTimeUtils.GetDuration(navigationTiming.requestStart, navigationTiming.responseStart);\r\n var response = DateTimeUtils.GetDuration(navigationTiming.responseStart, navigationTiming.responseEnd);\r\n var dom = DateTimeUtils.GetDuration(navigationTiming.responseEnd, navigationTiming.loadEventEnd);\r\n }\r\n else {\r\n var total = DateTimeUtils.GetDuration(timing.navigationStart, timing.loadEventEnd);\r\n var network = DateTimeUtils.GetDuration(timing.navigationStart, timing.connectEnd);\r\n var request = DateTimeUtils.GetDuration(timing.requestStart, timing.responseStart);\r\n var response = DateTimeUtils.GetDuration(timing.responseStart, timing.responseEnd);\r\n var dom = DateTimeUtils.GetDuration(timing.responseEnd, timing.loadEventEnd);\r\n }\r\n if (total === 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ErrorPVCalc, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!this.shouldCollectDuration(total, network, request, response, dom)) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.InvalidDurationValue, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.ClientPerformanceMathError, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance.duration = Util.msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = Util.msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = Util.msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = Util.msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = Util.msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n if (this.isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceNavigationTiming = function () {\r\n if (this.isPerformanceNavigationTimingSupported()) {\r\n return getPerformance().getEntriesByType(\"navigation\")[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns true is window PerformanceNavigationTiming API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceNavigationTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\").length > 0;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n var perf = getPerformance();\r\n return perf && perf.timing;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing.navigationStart > 0\r\n && timing.responseStart > 0\r\n && timing.requestStart > 0\r\n && timing.loadEventEnd > 0\r\n && timing.responseEnd > 0\r\n && timing.connectEnd > 0\r\n && timing.domLoading > 0;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var botAgentNames = ['googlebot', 'adsbot-google', 'apis-google', 'mediapartners-google'];\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames.length; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations.length; i++) {\r\n if (durations[i] >= this.MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/**\r\n * ApplicationInsights.ts\r\n * @copyright Microsoft 2018\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\nimport { Util, PageViewPerformance, PageView, RemoteDependencyData, Event as EventTelemetry, TelemetryItemCreator, Metric, Exception, SeverityLevel, Trace, DateTimeUtils, PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, CoreUtils, LoggingSeverity, _InternalMessageId, getWindow, getDocument, getHistory, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { PageViewPerformanceManager } from './Telemetry/PageViewPerformanceManager';\r\n\"use strict\";\r\nvar durationProperty = \"duration\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nvar ApplicationInsights = /** @class */ (function (_super) {\r\n tslib_1.__extends(ApplicationInsights, _super);\r\n function ApplicationInsights() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n // Counts number of trackAjax invokations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _this._trackAjaxAttempts = 0;\r\n var location = getLocation();\r\n _this._prevUri = location && location.href || \"\";\r\n return _this;\r\n }\r\n ApplicationInsights.getDefaultConfig = function (config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = 30 * 60 * 1000;\r\n config.sessionExpirationMs = 24 * 60 * 60 * 1000;\r\n config.disableExceptionTracking = Util.stringToBoolOrDefault(config.disableExceptionTracking);\r\n config.autoTrackPageVisitTime = Util.stringToBoolOrDefault(config.autoTrackPageVisitTime);\r\n config.overridePageViewDuration = Util.stringToBoolOrDefault(config.overridePageViewDuration);\r\n config.enableUnhandledPromiseRejectionTracking = Util.stringToBoolOrDefault(config.enableUnhandledPromiseRejectionTracking);\r\n if (isNaN(config.samplingPercentage) || config.samplingPercentage <= 0 || config.samplingPercentage >= 100) {\r\n config.samplingPercentage = 100;\r\n }\r\n config.isCookieUseDisabled = Util.stringToBoolOrDefault(config.isCookieUseDisabled);\r\n config.isStorageUseDisabled = Util.stringToBoolOrDefault(config.isStorageUseDisabled);\r\n config.isBrowserLinkTrackingEnabled = Util.stringToBoolOrDefault(config.isBrowserLinkTrackingEnabled);\r\n config.enableAutoRouteTracking = Util.stringToBoolOrDefault(config.enableAutoRouteTracking);\r\n config.namePrefix = config.namePrefix || \"\";\r\n return config;\r\n };\r\n ApplicationInsights.prototype.processTelemetry = function (env, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = this._telemetryInitializers.length;\r\n itemCtx = this._getTelCtx(itemCtx);\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = this._telemetryInitializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.apply(null, [env]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + Util.getExceptionName(e), { exception: Util.dump(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n this.processNext(env, itemCtx);\r\n }\r\n };\r\n ApplicationInsights.prototype.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(event, EventTelemetry.dataType, EventTelemetry.envelopeType, this.diagLog(), customProperties);\r\n this.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n ApplicationInsights.prototype.startTrackEvent = function (name) {\r\n try {\r\n this._eventTracking.start(name);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackEventFailed, \"startTrackEvent failed, event will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n ApplicationInsights.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n this._eventTracking.stop(name, undefined, properties); // Todo: Fix to pass measurements once type is updated\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackEventFailed, \"stopTrackEvent failed, event will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(trace, Trace.dataType, Trace.envelopeType, this.diagLog(), customProperties);\r\n this.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TrackTraceFailed, \"trackTrace failed, trace will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = TelemetryItemCreator.create(metric, Metric.dataType, Metric.envelopeType, this.diagLog(), customProperties);\r\n this.core.track(telemetryItem);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackMetricFailed, \"trackMetric failed, metric will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n ApplicationInsights.prototype.trackPageView = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n this._pageViewManager.trackPageView(inPv, tslib_1.__assign({}, inPv.properties, inPv.measurements, customProperties));\r\n if (this.config.autoTrackPageVisitTime) {\r\n this._pageVisitTimeManager.trackPreviousPageVisit(inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageView failed, page view will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n ApplicationInsights.prototype.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = TelemetryItemCreator.create(pageView, PageView.dataType, PageView.envelopeType, this.diagLog(), properties, systemProperties);\r\n this.core.track(telemetryItem);\r\n // reset ajaxes counter\r\n this._trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n ApplicationInsights.prototype.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = TelemetryItemCreator.create(pageViewPerformance, PageViewPerformance.dataType, PageViewPerformance.envelopeType, this.diagLog(), properties, systemProperties);\r\n this.core.track(telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n ApplicationInsights.prototype.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n try {\r\n this._pageViewPerformanceManager.populatePageViewPerformanceEvent(pageViewPerformance);\r\n this.sendPageViewPerformanceInternal(pageViewPerformance, customProperties);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackPVFailed, \"trackPageViewPerformance failed, page view will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n ApplicationInsights.prototype.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n this._pageTracking.start(name);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StartTrackFailed, \"startTrackPage failed, page view may not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n ApplicationInsights.prototype.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc.href || \"\";\r\n }\r\n this._pageTracking.stop(name, url, properties, measurement);\r\n if (this.config.autoTrackPageVisitTime) {\r\n this._pageVisitTimeManager.trackPreviousPageVisit(name, url);\r\n }\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.StopTrackFailed, \"stopTrackPage failed, page view will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n ApplicationInsights.prototype.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n var exceptionPartB = new Exception(this.diagLog(), exception.exception || new Error(Util.NotSpecified), exception.properties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = TelemetryItemCreator.create(exceptionPartB, Exception.dataType, Exception.envelopeType, this.diagLog(), customProperties, systemProperties);\r\n this.core.track(telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype.trackException = function (exception, customProperties) {\r\n try {\r\n this.sendExceptionInternal(exception, customProperties);\r\n }\r\n catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TrackExceptionFailed, \"trackException failed, exception will not be collected: \" + Util.getExceptionName(e), { exception: Util.dump(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n ApplicationInsights.prototype._onerror = function (exception) {\r\n try {\r\n var properties_1 = {\r\n url: (exception && exception.url) || (getDocument() || {}).URL,\r\n lineNumber: exception.lineNumber,\r\n columnNumber: exception.columnNumber,\r\n message: exception.message\r\n };\r\n if (Util.isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception.error)) {\r\n this._sendCORSException(properties_1.url);\r\n }\r\n else {\r\n if (!Util.isError(exception.error)) {\r\n var stack = \"window.onerror@\" + properties_1.url + \":\" + exception.lineNumber + \":\" + (exception.columnNumber || 0);\r\n exception.error = new Error(exception.message);\r\n exception.error.stack = stack;\r\n }\r\n this.trackException({ exception: exception.error, severityLevel: SeverityLevel.Error }, properties_1);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = exception.error ?\r\n (exception.error.name + \", \" + exception.error.message)\r\n : \"null\";\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.ExceptionWhileLoggingError, \"_onError threw exception while logging error, error will not be collected: \"\r\n + Util.getExceptionName(e), { exception: Util.dump(e), errorString: errorString });\r\n }\r\n };\r\n ApplicationInsights.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n this._telemetryInitializers.push(telemetryInitializer);\r\n };\r\n ApplicationInsights.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n var _this = this;\r\n if (this.isInitialized()) {\r\n return;\r\n }\r\n if (CoreUtils.isNullOrUndefined(core)) {\r\n throw Error(\"Error initializing\");\r\n }\r\n _super.prototype.initialize.call(this, config, core, extensions, pluginChain);\r\n this.setInitialized(false); // resetting the initialized state, just in case the following fails\r\n var ctx = this._getTelCtx();\r\n var identifier = this.identifier;\r\n this._globalconfig = {\r\n instrumentationKey: config.instrumentationKey,\r\n endpointUrl: config.endpointUrl || \"https://dc.services.visualstudio.com/v2/track\"\r\n };\r\n this.config = ctx.getExtCfg(identifier);\r\n // load default values if specified\r\n var defaults = ApplicationInsights.getDefaultConfig();\r\n if (defaults !== undefined) {\r\n for (var field in defaults) {\r\n // for each unspecified field, set the default value\r\n this.config[field] = ctx.getConfig(identifier, field, defaults[field]);\r\n }\r\n if (this._globalconfig) {\r\n for (var field in defaults) {\r\n if (this._globalconfig[field] === undefined) {\r\n this._globalconfig[field] = defaults[field];\r\n }\r\n }\r\n }\r\n }\r\n // Todo: move this out of static state\r\n if (this.config.isCookieUseDisabled) {\r\n Util.disableCookies();\r\n }\r\n // Todo: move this out of static state\r\n if (this.config.isStorageUseDisabled) {\r\n Util.disableStorage();\r\n }\r\n var configGetters = {\r\n instrumentationKey: function () { return config.instrumentationKey; },\r\n accountId: function () { return _this.config.accountId || config.accountId; },\r\n sessionRenewalMs: function () { return _this.config.sessionRenewalMs || config.sessionRenewalMs; },\r\n sessionExpirationMs: function () { return _this.config.sessionExpirationMs || config.sessionExpirationMs; },\r\n sampleRate: function () { return _this.config.samplingPercentage || config.samplingPercentage; },\r\n cookieDomain: function () { return _this.config.cookieDomain || config.cookieDomain; },\r\n sdkExtension: function () { return _this.config.sdkExtension || config.sdkExtension; },\r\n isBrowserLinkTrackingEnabled: function () { return _this.config.isBrowserLinkTrackingEnabled || config.isBrowserLinkTrackingEnabled; },\r\n appId: function () { return _this.config.appId || config.appId; }\r\n };\r\n this._pageViewPerformanceManager = new PageViewPerformanceManager(this.core);\r\n this._pageViewManager = new PageViewManager(this, this.config.overridePageViewDuration, this.core, this._pageViewPerformanceManager);\r\n this._pageVisitTimeManager = new PageVisitTimeManager(this.diagLog(), function (pageName, pageUrl, pageVisitTime) { return _this.trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n this._telemetryInitializers = this._telemetryInitializers || [];\r\n this._addDefaultTelemetryInitializers(configGetters);\r\n this._eventTracking = new Timing(this.diagLog(), \"trackEvent\");\r\n this._eventTracking.action =\r\n function (name, url, duration, properties) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n _this.trackEvent({ name: name, properties: properties });\r\n };\r\n // initialize page view timing\r\n this._pageTracking = new Timing(this.diagLog(), \"trackPageView\");\r\n this._pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (CoreUtils.isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties[durationProperty] = duration.toString();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _this.sendPageViewInternal(pageViewItem, properties);\r\n };\r\n var _window = getWindow();\r\n var _history = getHistory();\r\n var _location = getLocation();\r\n var instance = this;\r\n if (this.config.disableExceptionTracking === false &&\r\n !this.config.autoExceptionInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onerror_1 = \"onerror\";\r\n var originalOnError_1 = _window[onerror_1];\r\n _window.onerror = function (message, url, lineNumber, columnNumber, error) {\r\n var handled = originalOnError_1 && originalOnError_1(message, url, lineNumber, columnNumber, error);\r\n if (handled !== true) {\r\n instance._onerror({\r\n message: message,\r\n url: url,\r\n lineNumber: lineNumber,\r\n columnNumber: columnNumber,\r\n error: error\r\n });\r\n }\r\n return handled;\r\n };\r\n this.config.autoExceptionInstrumented = true;\r\n }\r\n if (this.config.disableExceptionTracking === false &&\r\n this.config.enableUnhandledPromiseRejectionTracking === true &&\r\n !this.config.autoUnhandledPromiseInstrumented && _window) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n var onunhandledrejection = \"onunhandledrejection\";\r\n var originalOnUnhandledRejection_1 = _window[onunhandledrejection];\r\n _window[onunhandledrejection] = function (error) {\r\n var handled = originalOnUnhandledRejection_1 && originalOnUnhandledRejection_1.call(_window, error);\r\n if (handled !== true) {\r\n instance._onerror({\r\n message: error.reason.toString(),\r\n error: error.reason instanceof Error ? error.reason : new Error(error.reason.toString()),\r\n url: _location ? _location.href : \"\",\r\n lineNumber: 0,\r\n columnNumber: 0\r\n });\r\n }\r\n return handled;\r\n };\r\n this.config.autoUnhandledPromiseInstrumented = true;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (this.config.enableAutoRouteTracking === true\r\n && _history && CoreUtils.isFunction(_history.pushState) && CoreUtils.isFunction(_history.replaceState)\r\n && _window\r\n && typeof Event !== \"undefined\") {\r\n var _self_1 = this;\r\n // Find the properties plugin\r\n CoreUtils.arrForEach(extensions, function (extension) {\r\n if (extension.identifier === PropertiesPluginIdentifier) {\r\n _this._properties = extension;\r\n }\r\n });\r\n _history.pushState = (function (f) { return function pushState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, Util.createDomEvent(_self_1.config.namePrefix + \"pushState\"));\r\n _dispatchEvent(_window, Util.createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.pushState);\r\n _history.replaceState = (function (f) { return function replaceState() {\r\n var ret = f.apply(this, arguments);\r\n _dispatchEvent(_window, Util.createDomEvent(_self_1.config.namePrefix + \"replaceState\"));\r\n _dispatchEvent(_window, Util.createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n return ret;\r\n }; })(_history.replaceState);\r\n if (_window.addEventListener) {\r\n _window.addEventListener(_self_1.config.namePrefix + \"popstate\", function () {\r\n _dispatchEvent(_window, Util.createDomEvent(_self_1.config.namePrefix + \"locationchange\"));\r\n });\r\n _window.addEventListener(_self_1.config.namePrefix + \"locationchange\", function () {\r\n if (_self_1._properties && _self_1._properties.context && _self_1._properties.context.telemetryTrace) {\r\n _self_1._properties.context.telemetryTrace.traceID = Util.generateW3CId();\r\n _self_1._properties.context.telemetryTrace.name = _location && _location.pathname || \"_unknown_\";\r\n }\r\n if (_this._currUri) {\r\n _this._prevUri = _this._currUri;\r\n _this._currUri = _location && _location.href || \"\";\r\n }\r\n else {\r\n _this._currUri = _location && _location.href || \"\";\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self_1.trackPageView({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_this, _this._prevUri), _self_1.autoRoutePVDelay);\r\n });\r\n }\r\n }\r\n this.setInitialized(true);\r\n };\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n ApplicationInsights.prototype.trackPageVisitTime = function (pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n this.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n };\r\n ApplicationInsights.prototype._addDefaultTelemetryInitializers = function (configGetters) {\r\n if (!configGetters.isBrowserLinkTrackingEnabled()) {\r\n var browserLinkPaths_1 = ['/browserLinkSignalR/', '/__browserLink/'];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (envelope.baseType === RemoteDependencyData.dataType) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1.length; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n this._addTelemetryInitializer(dropBrowserLinkRequests);\r\n }\r\n };\r\n ApplicationInsights.prototype._addTelemetryInitializer = function (telemetryInitializer) {\r\n this._telemetryInitializers.push(telemetryInitializer);\r\n };\r\n ApplicationInsights.prototype._sendCORSException = function (url) {\r\n var exception = {\r\n message: \"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\",\r\n url: url,\r\n lineNumber: 0,\r\n columnNumber: 0,\r\n error: undefined\r\n };\r\n var telemetryItem = TelemetryItemCreator.create(exception, Exception.dataType, Exception.envelopeType, this.diagLog(), { url: url });\r\n this.core.track(telemetryItem);\r\n };\r\n ApplicationInsights.Version = \"2.5.4\"; // Not currently used anywhere\r\n return ApplicationInsights;\r\n}(BaseTelemetryPlugin));\r\nexport { ApplicationInsights };\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n this._name = name;\r\n this._events = {};\r\n this._logger = logger;\r\n }\r\n Timing.prototype.start = function (name) {\r\n if (typeof this._events[name] !== \"undefined\") {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StartCalledMoreThanOnce, \"start was called more than once for this event without calling stop.\", { name: this._name, key: name }, true);\r\n }\r\n this._events[name] = +new Date;\r\n };\r\n Timing.prototype.stop = function (name, url, properties, measurements) {\r\n var start = this._events[name];\r\n if (isNaN(start)) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.StopCalledWithoutStart, \"stop was called without a corresponding start.\", { name: this._name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = DateTimeUtils.GetDuration(start, end);\r\n this.action(name, url, duration, properties, measurements);\r\n }\r\n delete this._events[name];\r\n this._events[name] = undefined;\r\n };\r\n return Timing;\r\n}());\r\n//# sourceMappingURL=ApplicationInsights.js.map","import { Util } from '@microsoft/applicationinsights-common';\r\nimport { IDiagnosticLogger, LoggingSeverity, _InternalMessageId, getJSON } from '@microsoft/applicationinsights-core-js';\r\nimport { ISenderConfig } from './Interfaces';\r\n\r\nexport interface ISendBuffer {\r\n /**\r\n * Enqueue the payload\r\n */\r\n enqueue: (payload: string) => void;\r\n\r\n /**\r\n * Returns the number of elements in the buffer\r\n */\r\n count: () => number;\r\n\r\n /**\r\n * Clears the buffer\r\n */\r\n clear: () => void;\r\n\r\n /**\r\n * Returns items stored in the buffer\r\n */\r\n getItems: () => string[];\r\n\r\n /**\r\n * Build a batch of all elements in the payload array\r\n */\r\n batchPayloads: (payload: string[]) => string;\r\n\r\n /**\r\n * Moves items to the SENT_BUFFER.\r\n * The buffer holds items which were sent, but we haven't received any response from the backend yet.\r\n */\r\n markAsSent: (payload: string[]) => void;\r\n\r\n /**\r\n * Removes items from the SENT_BUFFER. Should be called on successful response from the backend.\r\n */\r\n clearSent: (payload: string[]) => void;\r\n}\r\n\r\n/*\r\n * An array based send buffer.\r\n */\r\nexport class ArraySendBuffer implements ISendBuffer {\r\n private _config: ISenderConfig;\r\n private _buffer: string[];\r\n\r\n constructor(config: ISenderConfig) {\r\n this._config = config;\r\n\r\n this._buffer = [];\r\n }\r\n\r\n public enqueue(payload: string) {\r\n this._buffer.push(payload);\r\n }\r\n\r\n public count(): number {\r\n return this._buffer.length;\r\n }\r\n\r\n public clear() {\r\n this._buffer.length = 0;\r\n }\r\n\r\n public getItems(): string[] {\r\n return this._buffer.slice(0);\r\n }\r\n\r\n public batchPayloads(payload: string[]): string {\r\n if (payload && payload.length > 0) {\r\n const batch = this._config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n\r\n return batch;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public markAsSent(payload: string[]) {\r\n this.clear();\r\n }\r\n\r\n public clearSent(payload: string[]) {\r\n // not supported\r\n }\r\n}\r\n\r\n/*\r\n * Session storege buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nexport class SessionStorageSendBuffer implements ISendBuffer {\r\n static BUFFER_KEY = \"AI_buffer\";\r\n static SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n static MAX_BUFFER_SIZE = 2000;\r\n private _bufferFullMessageSent = false;\r\n\r\n // An in-memory copy of the buffer. A copy is saved to the session storage on enqueue() and clear().\r\n // The buffer is restored in a constructor and contains unsent events from a previous page.\r\n private _buffer: string[];\r\n private _config: ISenderConfig;\r\n\r\n private _logger: IDiagnosticLogger;\r\n\r\n constructor(logger: IDiagnosticLogger, config: ISenderConfig) {\r\n this._logger = logger;\r\n this._config = config;\r\n\r\n const bufferItems = this.getBuffer(SessionStorageSendBuffer.BUFFER_KEY);\r\n const notDeliveredItems = this.getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n\r\n this._buffer = bufferItems.concat(notDeliveredItems);\r\n\r\n // If the buffer has too many items, drop items from the end.\r\n if (this._buffer.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n this._buffer.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n\r\n // update DataLossAnalyzer with the number of recovered items\r\n // Uncomment if you want to use DataLossanalyzer\r\n // DataLossAnalyzer.itemsRestoredFromSessionBuffer = this._buffer.length;\r\n\r\n this.setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n this.setBuffer(SessionStorageSendBuffer.BUFFER_KEY, this._buffer);\r\n }\r\n\r\n public enqueue(payload: string) {\r\n if (this._buffer.length >= SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // sent internal log only once per page view\r\n if (!this._bufferFullMessageSent) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.SessionStorageBufferFull,\r\n \"Maximum buffer size reached: \" + this._buffer.length,\r\n true);\r\n this._bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n\r\n this._buffer.push(payload);\r\n this.setBuffer(SessionStorageSendBuffer.BUFFER_KEY, this._buffer);\r\n }\r\n\r\n public count(): number {\r\n return this._buffer.length;\r\n }\r\n\r\n public clear() {\r\n this._buffer.length = 0;\r\n this.setBuffer(SessionStorageSendBuffer.BUFFER_KEY, []);\r\n this.setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, []);\r\n\r\n this._bufferFullMessageSent = false;\r\n }\r\n\r\n public getItems(): string[] {\r\n return this._buffer.slice(0)\r\n }\r\n\r\n public batchPayloads(payload: string[]): string {\r\n if (payload && payload.length > 0) {\r\n const batch = this._config.emitLineDelimitedJson() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n\r\n return batch;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public markAsSent(payload: string[]) {\r\n this._buffer = this.removePayloadsFromBuffer(payload, this._buffer);\r\n this.setBuffer(SessionStorageSendBuffer.BUFFER_KEY, this._buffer);\r\n\r\n let sentElements = this.getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n\r\n if (sentElements.length > SessionStorageSendBuffer.MAX_BUFFER_SIZE) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.SessionStorageBufferFull,\r\n \"Sent buffer reached its maximum size: \" + sentElements.length,\r\n true);\r\n\r\n sentElements.length = SessionStorageSendBuffer.MAX_BUFFER_SIZE;\r\n }\r\n\r\n this.setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n }\r\n }\r\n\r\n public clearSent(payload: string[]) {\r\n let sentElements = this.getBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY);\r\n sentElements = this.removePayloadsFromBuffer(payload, sentElements);\r\n\r\n this.setBuffer(SessionStorageSendBuffer.SENT_BUFFER_KEY, sentElements);\r\n }\r\n\r\n private removePayloadsFromBuffer(payloads: string[], buffer: string[]): string[] {\r\n const remaining: string[] = [];\r\n\r\n for (const i in buffer) {\r\n let contains = false;\r\n for (const j in payloads) {\r\n if (payloads[j] === buffer[i]) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n remaining.push(buffer[i]);\r\n }\r\n };\r\n\r\n return remaining;\r\n }\r\n\r\n private getBuffer(key: string): string[] {\r\n let prefixedKey = key;\r\n try {\r\n prefixedKey = this._config.namePrefix && this._config.namePrefix() ? this._config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n const bufferJson = Util.getSessionStorage(this._logger, prefixedKey);\r\n if (bufferJson) {\r\n const buffer: string[] = getJSON().parse(bufferJson);\r\n if (buffer) {\r\n return buffer;\r\n }\r\n }\r\n } catch (e) {\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL,\r\n _InternalMessageId.FailedToRestoreStorageBuffer,\r\n \" storage key: \" + prefixedKey + \", \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private setBuffer(key: string, buffer: string[]) {\r\n let prefixedKey = key;\r\n try {\r\n prefixedKey = this._config.namePrefix && this._config.namePrefix() ? this._config.namePrefix() + \"_\" + prefixedKey : prefixedKey;\r\n const bufferJson = JSON.stringify(buffer);\r\n Util.setSessionStorage(this._logger, prefixedKey, bufferJson);\r\n } catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n Util.setSessionStorage(this._logger, prefixedKey, JSON.stringify([]));\r\n\r\n this._logger.throwInternal(LoggingSeverity.WARNING,\r\n _InternalMessageId.FailedToSetStorageBuffer,\r\n \" storage key: \" + prefixedKey + \", \" + Util.getExceptionName(e) + \". Buffer cleared\",\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n}","import {\r\n IEnvelope, Data, Envelope,\r\n RemoteDependencyData, Event, Exception,\r\n Metric, PageView, Trace, PageViewPerformance, IDependencyTelemetry,\r\n IPageViewPerformanceTelemetry, CtxTagKeys,\r\n HttpMethod, IPageViewTelemetryInternal, IWeb,\r\n Util,\r\n IExceptionTelemetry,\r\n IExceptionInternal,\r\n SampleRate\r\n} from '@microsoft/applicationinsights-common';\r\nimport {\r\n ITelemetryItem, CoreUtils,\r\n IDiagnosticLogger, LoggingSeverity, _InternalMessageId,\r\n hasJSON, getJSON\r\n} from '@microsoft/applicationinsights-core-js';\r\n\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nconst baseType: string = \"baseType\";\r\nconst baseData: string = \"baseData\";\r\n\r\nexport abstract class EnvelopeCreator {\r\n public static Version = \"2.5.4\";\r\n\r\n protected static extractPropsAndMeasurements(data: { [key: string]: any }, properties: { [key: string]: any }, measurements: { [key: string]: any }) {\r\n if (!CoreUtils.isNullOrUndefined(data)) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n const value = data[key];\r\n if (CoreUtils.isNumber(value)) {\r\n measurements[key] = value;\r\n } else if (CoreUtils.isString(value)) {\r\n properties[key] = value;\r\n } else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\n protected static createEnvelope(logger: IDiagnosticLogger, envelopeType: string, telemetryItem: ITelemetryItem, data: Data): IEnvelope {\r\n const envelope = new Envelope(logger, data, envelopeType);\r\n if (telemetryItem[SampleRate]) {\r\n envelope.sampleRate = telemetryItem[SampleRate];\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n const iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n\r\n // extract all extensions from ctx\r\n EnvelopeCreator.extractPartAExtensions(telemetryItem, envelope);\r\n\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n if (!telemetryItem.tags) {\r\n telemetryItem.tags = [];\r\n }\r\n\r\n return envelope;\r\n }\r\n\r\n /*\r\n * Maps Part A data from CS 4.0\r\n */\r\n private static extractPartAExtensions(item: ITelemetryItem, env: IEnvelope) {\r\n // todo: switch to keys from common in this method\r\n if (!env.tags) {\r\n env.tags = {};\r\n }\r\n\r\n if (!item.ext) {\r\n item.ext = {};\r\n }\r\n\r\n if (!item.tags) {\r\n item.tags = [];\r\n }\r\n\r\n if (item.ext.user) {\r\n if (item.ext.user.authId) {\r\n env.tags[CtxTagKeys.userAuthUserId] = item.ext.user.authId;\r\n }\r\n\r\n const userId = item.ext.user.id || item.ext.user.localId;\r\n if (userId) {\r\n env.tags[CtxTagKeys.userId] = userId;\r\n }\r\n }\r\n\r\n if (item.ext.app) {\r\n if (item.ext.app.sesId) {\r\n env.tags[CtxTagKeys.sessionId] = item.ext.app.sesId;\r\n }\r\n }\r\n\r\n if (item.ext.device) {\r\n if (item.ext.device.id || item.ext.device.localId) {\r\n env.tags[CtxTagKeys.deviceId] = item.ext.device.id || item.ext.device.localId;\r\n }\r\n\r\n if (item.ext.device.deviceClass) {\r\n env.tags[CtxTagKeys.deviceType] = item.ext.device.deviceClass;\r\n }\r\n\r\n if (item.ext.device.ip) {\r\n env.tags[CtxTagKeys.deviceIp] = item.ext.device.ip;\r\n }\r\n }\r\n\r\n\r\n if (item.ext.web) {\r\n const web: IWeb = item.ext.web as IWeb;\r\n\r\n if (web.browserLang) {\r\n env.tags[CtxTagKeys.deviceLanguage] = web.browserLang;\r\n }\r\n if (web.browserVer) {\r\n env.tags[CtxTagKeys.deviceBrowserVersion] = web.browserVer;\r\n }\r\n\r\n if (web.browser) {\r\n env.tags[CtxTagKeys.deviceBrowser] = web.browser;\r\n }\r\n env.data = env.data || {};\r\n env.data.baseData = env.data.baseData || {};\r\n env.data.baseData.properties = env.data.baseData.properties || {};\r\n\r\n if (web.domain) {\r\n env.data.baseData.properties['domain'] = web.domain;\r\n }\r\n\r\n if (web.isManual) {\r\n env.data.baseData.properties['isManual'] = web.isManual.toString();\r\n }\r\n\r\n if (web.screenRes) {\r\n env.data.baseData.properties['screenRes'] = web.screenRes;\r\n }\r\n\r\n if (web.userConsent) {\r\n env.data.baseData.properties['userConsent'] = web.userConsent.toString();\r\n }\r\n }\r\n\r\n if (item.ext.device) {\r\n if (item.ext.device.model) {\r\n env.tags[CtxTagKeys.deviceModel] = item.ext.device.model;\r\n }\r\n }\r\n\r\n if (item.ext.os && item.ext.os.name) {\r\n env.tags[CtxTagKeys.deviceOS] = item.ext.os.name;\r\n }\r\n\r\n if (item.ext.device) {\r\n if (item.ext.device.deviceType) {\r\n env.tags[CtxTagKeys.deviceType] = item.ext.device.deviceType;\r\n }\r\n }\r\n\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n\r\n if (item.ext.trace) {\r\n if (item.ext.trace.parentID) {\r\n env.tags[CtxTagKeys.operationParentId] = item.ext.trace.parentID;\r\n }\r\n\r\n if (item.ext.trace.name) {\r\n env.tags[CtxTagKeys.operationName] = item.ext.trace.name;\r\n }\r\n\r\n if (item.ext.trace.traceID) {\r\n env.tags[CtxTagKeys.operationId] = item.ext.trace.traceID;\r\n }\r\n }\r\n\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n\r\n const tgs = {};\r\n // deals with tags.push({object})\r\n for(let i = item.tags.length - 1; i >= 0; i--){\r\n const tg = item.tags[i];\r\n // CoreUtils.objKeys returns an array of keys\r\n CoreUtils.arrForEach(CoreUtils.objKeys(tg), key => {\r\n tgs[key] = tg[key];\r\n })\r\n item.tags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value\r\n for(const tg in item.tags){\r\n tgs[tg] = item.tags[tg];\r\n }\r\n\r\n env.tags = { ...env.tags, ...tgs };\r\n if(!env.tags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n env.tags[CtxTagKeys.internalSdkVersion] = `javascript:${EnvelopeCreator.Version}`;\r\n }\r\n }\r\n protected _logger: IDiagnosticLogger;\r\n\r\n abstract Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope;\r\n}\r\n\r\nexport class DependencyEnvelopeCreator extends EnvelopeCreator {\r\n static DependencyEnvelopeCreator = new DependencyEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n const customMeasurements = telemetryItem.baseData.measurements || {};\r\n const customProperties = telemetryItem.baseData.properties || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n const bd = telemetryItem.baseData as IDependencyTelemetry;\r\n if (CoreUtils.isNullOrUndefined(bd)) {\r\n logger.warnToConsole(\"Invalid input for dependency data\");\r\n return null;\r\n }\r\n\r\n const id = bd.id;\r\n const absoluteUrl = bd.target;\r\n const command = bd.name;\r\n const duration = bd.duration;\r\n const success = bd.success;\r\n const resultCode = bd.responseCode;\r\n const requestAPI = bd.type;\r\n const correlationContext = bd.correlationContext;\r\n const method = bd.properties && bd.properties[HttpMethod] ? bd.properties[HttpMethod] : \"GET\";\r\n const baseData = new RemoteDependencyData(logger, id, absoluteUrl, command, duration, success, resultCode, method, requestAPI, correlationContext, customProperties, customMeasurements);\r\n const data = new Data(RemoteDependencyData.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class EventEnvelopeCreator extends EnvelopeCreator {\r\n static EventEnvelopeCreator = new EventEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n let customProperties = {};\r\n let customMeasurements = {};\r\n if (telemetryItem.baseType !== Event.dataType) {\r\n customProperties['baseTypeSource'] = telemetryItem.baseType; // save the passed in base type as a property\r\n }\r\n\r\n if (telemetryItem.baseType === Event.dataType) { // take collection\r\n customProperties = telemetryItem.baseData.properties || {};\r\n customMeasurements = telemetryItem.baseData.measurements || {};\r\n } else { // if its not a known type, convert to custom event\r\n if (telemetryItem.baseData) {\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.baseData, customProperties, customMeasurements);\r\n }\r\n }\r\n\r\n // Exract root level properties from part C telemetryItem.data\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n const eventName = telemetryItem.baseData.name;\r\n const baseData = new Event(logger, eventName, customProperties, customMeasurements);\r\n const data = new Data(Event.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class ExceptionEnvelopeCreator extends EnvelopeCreator {\r\n static ExceptionEnvelopeCreator = new ExceptionEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n const bd = telemetryItem.baseData as IExceptionInternal;\r\n const baseData = Exception.CreateFromInterface(logger, bd);\r\n const data = new Data(Exception.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class MetricEnvelopeCreator extends EnvelopeCreator {\r\n static MetricEnvelopeCreator = new MetricEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n const props = telemetryItem.baseData.properties || {};\r\n const measurements = telemetryItem.baseData.measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n const name = telemetryItem.baseData.name;\r\n const average = telemetryItem.baseData.average;\r\n const sampleCount = telemetryItem.baseData.sampleCount;\r\n const min = telemetryItem.baseData.min;\r\n const max = telemetryItem.baseData.max;\r\n const baseData = new Metric(logger, name, average, sampleCount, min, max, props, measurements);\r\n const data = new Data(Metric.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class PageViewEnvelopeCreator extends EnvelopeCreator {\r\n static PageViewEnvelopeCreator = new PageViewEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n let duration;\r\n if (!CoreUtils.isNullOrUndefined(telemetryItem.baseData) &&\r\n !CoreUtils.isNullOrUndefined(telemetryItem.baseData.properties) &&\r\n !CoreUtils.isNullOrUndefined(telemetryItem.baseData.properties.duration)) { // from part B properties\r\n duration = telemetryItem.baseData.properties.duration;\r\n delete telemetryItem.baseData.properties.duration;\r\n } else if (!CoreUtils.isNullOrUndefined(telemetryItem.data) &&\r\n !CoreUtils.isNullOrUndefined(telemetryItem.data[\"duration\"])) { // from custom properties\r\n duration = telemetryItem.data[\"duration\"];\r\n delete telemetryItem.data[\"duration\"];\r\n }\r\n\r\n const bd = telemetryItem.baseData as IPageViewTelemetryInternal;\r\n\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n let currentContextId;\r\n if (telemetryItem.ext && telemetryItem.ext.trace && telemetryItem.ext.trace.traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n const id = bd.id || currentContextId\r\n const name = bd.name;\r\n const url = bd.uri;\r\n const properties = bd.properties || {};\r\n const measurements = bd.measurements || {};\r\n\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!CoreUtils.isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!CoreUtils.isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!CoreUtils.isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!CoreUtils.isNullOrUndefined(bd.properties)) {\r\n const pageTags = bd.properties;\r\n for (const key in pageTags) {\r\n if (pageTags.hasOwnProperty(key)) {\r\n properties[key] = pageTags[key];\r\n }\r\n }\r\n }\r\n\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n const baseData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n const data = new Data(PageView.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class PageViewPerformanceEnvelopeCreator extends EnvelopeCreator {\r\n static PageViewPerformanceEnvelopeCreator = new PageViewPerformanceEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n const bd = telemetryItem.baseData as IPageViewPerformanceTelemetry;\r\n const name = bd.name;\r\n const url = bd.uri || (bd as any).url;\r\n const properties = bd.properties || {};\r\n const measurements = bd.measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n const baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n const data = new Data(PageViewPerformance.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n\r\nexport class TraceEnvelopeCreator extends EnvelopeCreator {\r\n static TraceEnvelopeCreator = new TraceEnvelopeCreator();\r\n\r\n Create(logger: IDiagnosticLogger, telemetryItem: ITelemetryItem): IEnvelope {\r\n this._logger = logger;\r\n if (CoreUtils.isNullOrUndefined(telemetryItem.baseData)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n\r\n const message = telemetryItem.baseData.message;\r\n const severityLevel = telemetryItem.baseData.severityLevel;\r\n const props = telemetryItem.baseData.properties || {};\r\n const measurements = telemetryItem.baseData.measurements || {};\r\n EnvelopeCreator.extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n const baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n const data = new Data(Trace.dataType, baseData);\r\n return EnvelopeCreator.createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n }\r\n}\r\n","import { Util, ISerializable, FieldType } from '@microsoft/applicationinsights-common';\r\nimport { IDiagnosticLogger, LoggingSeverity, _InternalMessageId, CoreUtils, getJSON } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class Serializer {\r\n\r\n private _logger: IDiagnosticLogger;\r\n\r\n constructor(logger: IDiagnosticLogger) {\r\n this._logger = logger;\r\n }\r\n\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n public serialize(input: ISerializable): string {\r\n const output = this._serializeObject(input, \"root\");\r\n try {\r\n return getJSON().stringify(output);\r\n } catch (e) {\r\n // if serialization fails return an empty string\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && CoreUtils.isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n\r\n private _serializeObject(source: ISerializable, name: string): any {\r\n const circularReferenceCheck = \"__aiCircularRefCheck\";\r\n let output = {};\r\n\r\n if (!source) {\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, \"cannot serialize object because it is null or undefined\", { name }, true);\r\n return output;\r\n }\r\n\r\n if (source[circularReferenceCheck]) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CircularReferenceDetected, \"Circular reference detected while serializing object\", { name }, true);\r\n return output;\r\n }\r\n\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = this._serializeStringMap(source, \"number\", name);\r\n } else if (name === \"properties\") {\r\n output = this._serializeStringMap(source, \"string\", name);\r\n } else if (name === \"tags\") {\r\n output = this._serializeStringMap(source, \"string\", name);\r\n } else if (Util.isArray(source)) {\r\n output = this._serializeArray(source as any, name);\r\n } else {\r\n this._logger.throwInternal(LoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, \"Attempting to serialize an object which does not implement ISerializable\", { name }, true);\r\n\r\n try {\r\n // verify that the object can be stringified\r\n getJSON().stringify(source);\r\n output = source;\r\n } catch (e) {\r\n // if serialization fails return an empty string\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSerializeObject, (e && CoreUtils.isFunction(e.toString)) ? e.toString() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n source[circularReferenceCheck] = true;\r\n for (const field in source.aiDataContract) {\r\n\r\n const contract = source.aiDataContract[field];\r\n const isRequired = (CoreUtils.isFunction(contract)) ? (contract() & FieldType.Required) : (contract & FieldType.Required);\r\n const isHidden = (CoreUtils.isFunction(contract)) ? (contract() & FieldType.Hidden) : (contract & FieldType.Hidden);\r\n const isArray = contract & FieldType.Array;\r\n\r\n const isPresent = source[field] !== undefined;\r\n const isObject = CoreUtils.isObject(source[field]) && source[field] !== null;\r\n\r\n if (isRequired && !isPresent && !isArray) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.MissingRequiredFieldSpecification,\r\n \"Missing required field specification. The field is required but not present on source\",\r\n { field, name });\r\n\r\n // If not in debug mode, continue and hope the error is permissible\r\n continue;\r\n }\r\n\r\n if (isHidden) {\r\n // Don't serialize hidden fields\r\n continue;\r\n }\r\n\r\n let value;\r\n if (isObject) {\r\n if (isArray) {\r\n // special case; resurse on each object in the source array\r\n value = this._serializeArray(source[field], field);\r\n } else {\r\n // recurse on the source object in this field\r\n value = this._serializeObject(source[field], field);\r\n }\r\n } else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n\r\n private _serializeArray(sources: ISerializable[], name: string): any[] {\r\n let output;\r\n\r\n if (!!sources) {\r\n if (!Util.isArray(sources)) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.ItemNotInArray,\r\n \"This field was specified as an array in the contract but the item is not an array.\\r\\n\",\r\n { name }, true);\r\n } else {\r\n output = [];\r\n for (let i = 0; i < sources.length; i++) {\r\n const source = sources[i];\r\n const item = this._serializeObject(source, name + \"[\" + i + \"]\");\r\n output.push(item);\r\n }\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n private _serializeStringMap(map: any, expectedType: string, name: string) {\r\n let output;\r\n if (map) {\r\n output = {};\r\n for (const field in map) {\r\n const value = map[field];\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n } else if (value === null) {\r\n output[field] = \"null\";\r\n } else if (!value.toString) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value.toString();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n } else if (value === null) {\r\n output[field] = \"null\";\r\n } else {\r\n const num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL, output[field], null, true);\r\n }\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n}","import { CoreUtils, EventHelper, getWindow, getDocument, getNavigator } from '@microsoft/applicationinsights-core-js';\r\n\r\n/**\r\n * @description Monitors browser for offline events\r\n * @export default - Offline: Static instance of OfflineListener\r\n * @class OfflineListener\r\n */\r\nexport class OfflineListener {\r\n public static Offline = new OfflineListener;\r\n public isListening: boolean;\r\n private _onlineStatus: boolean = true;\r\n \r\n constructor() {\r\n let _window = getWindow();\r\n let _document = getDocument();\r\n let isListening = false;\r\n let _this = this;\r\n\r\n try {\r\n if (_window) {\r\n if (EventHelper.Attach(_window, 'online', this._setOnline.bind(_this))) {\r\n EventHelper.Attach(_window, 'offline', this._setOffline.bind(_this));\r\n isListening = true;\r\n }\r\n }\r\n \r\n if (_document) {\r\n // Also attach to the document.body or document\r\n let target:any = _document.body || _document;\r\n\r\n if (!CoreUtils.isUndefined(target.ononline)) {\r\n target.ononline = this._setOnline.bind(_this);\r\n target.onoffline = this._setOffline.bind(_this)\r\n isListening = true;\r\n }\r\n }\r\n } catch (e) {\r\n\r\n // this makes react-native less angry\r\n isListening = false;\r\n }\r\n\r\n this.isListening = isListening;\r\n }\r\n\r\n public isOnline(): boolean {\r\n var _navigator = getNavigator();\r\n if (this.isListening) {\r\n return this._onlineStatus\r\n } else if (_navigator && !CoreUtils.isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n return _navigator.onLine;\r\n } else {\r\n // Cannot determine online status - report as online\r\n return true;\r\n }\r\n }\r\n\r\n public isOffline(): boolean {\r\n return !this.isOnline();\r\n }\r\n\r\n private _setOnline() {\r\n this._onlineStatus = true;\r\n }\r\n private _setOffline() {\r\n this._onlineStatus = false;\r\n }\r\n}\r\n\r\nexport const Offline = OfflineListener.Offline;\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport class HashCodeScoreGenerator {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n public static INT_MAX_VALUE: number = 2147483647;\r\n\r\n // (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\n private static MIN_INPUT_LENGTH: number = 8;\r\n\r\n public getHashCodeScore(key: string): number {\r\n const score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n }\r\n\r\n public getHashCode(input: string): number {\r\n if (input === \"\") { return 0; }\r\n\r\n while (input.length < HashCodeScoreGenerator.MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n let hash: number = 5381;\r\n\r\n for (let i: number = 0; i < input.length; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n\r\n return Math.abs(hash);\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { HashCodeScoreGenerator } from './HashCodeScoreGenerator';\r\nimport { ITelemetryItem } from '@microsoft/applicationinsights-core-js';\r\nimport { ContextTagKeys } from '@microsoft/applicationinsights-common';\r\n\r\nexport class SamplingScoreGenerator {\r\n private hashCodeGeneragor: HashCodeScoreGenerator;\r\n private keys: ContextTagKeys;\r\n\r\n constructor() {\r\n this.hashCodeGeneragor = new HashCodeScoreGenerator();\r\n this.keys = new ContextTagKeys();\r\n }\r\n\r\n public getSamplingScore(item: ITelemetryItem): number {\r\n let score: number = 0;\r\n if (item.tags && item.tags[this.keys.userId]) { // search in tags first, then ext\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.tags[this.keys.userId]);\r\n } else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.ext.user.id);\r\n } else if (item.tags && item.tags[this.keys.operationId]) { // search in tags first, then ext\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.tags[this.keys.operationId]);\r\n } else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace.traceID) {\r\n score = this.hashCodeGeneragor.getHashCodeScore(item.ext.telemetryTrace.traceID);\r\n } else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n\r\n return score;\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { SamplingScoreGenerator } from './SamplingScoreGenerators/SamplingScoreGenerator';\r\nimport { ISample, Metric } from '@microsoft/applicationinsights-common';\r\nimport { ITelemetryItem, IDiagnosticLogger, _InternalMessageId, LoggingSeverity, DiagnosticLogger, CoreUtils } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class Sample implements ISample {\r\n public sampleRate: number;\r\n\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n public INT_MAX_VALUE: number = 2147483647;\r\n private samplingScoreGenerator: SamplingScoreGenerator;\r\n private _logger: IDiagnosticLogger;\r\n\r\n constructor(sampleRate: number, logger?: IDiagnosticLogger) {\r\n this._logger = CoreUtils.isNullOrUndefined(logger) ? new DiagnosticLogger() : logger;\r\n \r\n if (sampleRate > 100 || sampleRate < 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING,\r\n _InternalMessageId.SampleRateOutOfRange,\r\n \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\",\r\n { samplingRate: sampleRate }, true);\r\n this.sampleRate = 100;\r\n }\r\n\r\n this.sampleRate = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n public isSampledIn(envelope: ITelemetryItem): boolean {\r\n const samplingPercentage = this.sampleRate; // 0 - 100\r\n let isSampledIn = false;\r\n\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n } else if (envelope.baseType === Metric.dataType) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n\r\n isSampledIn = this.samplingScoreGenerator.getSamplingScore(envelope) < samplingPercentage;\r\n return isSampledIn;\r\n }\r\n}","import { ISenderConfig, XDomainRequest as IXDomainRequest, IBackendResponse } from './Interfaces';\r\nimport { ISendBuffer, SessionStorageSendBuffer, ArraySendBuffer } from './SendBuffer';\r\nimport {\r\n EnvelopeCreator, DependencyEnvelopeCreator, EventEnvelopeCreator,\r\n ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator,\r\n PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator\r\n} from './EnvelopeCreator';\r\nimport { Serializer } from './Serializer'; // todo move to channel\r\nimport {\r\n DisabledPropertyName, RequestHeaders, Util,\r\n IEnvelope, PageView, Event,\r\n Trace, Exception, Metric,\r\n PageViewPerformance, RemoteDependencyData,\r\n IChannelControlsAI,\r\n IConfig,\r\n ProcessLegacy,\r\n BreezeChannelIdentifier,\r\n SampleRate\r\n} from '@microsoft/applicationinsights-common';\r\nimport {\r\n ITelemetryItem, IProcessTelemetryContext, IConfiguration, CoreUtils,\r\n _InternalMessageId, LoggingSeverity, IDiagnosticLogger, IAppInsightsCore, IPlugin,\r\n getWindow, getNavigator, getJSON, BaseTelemetryPlugin, ITelemetryPluginChain\r\n} from '@microsoft/applicationinsights-core-js';\r\nimport { Offline } from './Offline';\r\nimport { Sample } from './TelemetryProcessors/Sample'\r\n\r\ndeclare var XDomainRequest: {\r\n prototype: IXDomainRequest;\r\n new(): IXDomainRequest;\r\n};\r\n\r\nexport type SenderFunction = (payload: string[], isAsync: boolean) => void;\r\n\r\nfunction _getResponseText(xhr: XMLHttpRequest | IXDomainRequest) {\r\n try {\r\n return xhr.responseText;\r\n } catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class Sender extends BaseTelemetryPlugin implements IChannelControlsAI {\r\n\r\n public static constructEnvelope(orig: ITelemetryItem, iKey: string, logger: IDiagnosticLogger): IEnvelope {\r\n let envelope: ITelemetryItem;\r\n if (iKey !== orig.iKey && !CoreUtils.isNullOrUndefined(iKey)) {\r\n envelope = {\r\n ...orig,\r\n iKey\r\n };\r\n } else {\r\n envelope = orig;\r\n }\r\n\r\n switch (envelope.baseType) {\r\n case Event.dataType:\r\n return EventEnvelopeCreator.EventEnvelopeCreator.Create(logger, envelope);\r\n case Trace.dataType:\r\n return TraceEnvelopeCreator.TraceEnvelopeCreator.Create(logger, envelope);\r\n case PageView.dataType:\r\n return PageViewEnvelopeCreator.PageViewEnvelopeCreator.Create(logger, envelope);\r\n case PageViewPerformance.dataType:\r\n return PageViewPerformanceEnvelopeCreator.PageViewPerformanceEnvelopeCreator.Create(logger, envelope);\r\n case Exception.dataType:\r\n return ExceptionEnvelopeCreator.ExceptionEnvelopeCreator.Create(logger, envelope);\r\n case Metric.dataType:\r\n return MetricEnvelopeCreator.MetricEnvelopeCreator.Create(logger, envelope);\r\n case RemoteDependencyData.dataType:\r\n return DependencyEnvelopeCreator.DependencyEnvelopeCreator.Create(logger, envelope);\r\n default:\r\n\r\n return EventEnvelopeCreator.EventEnvelopeCreator.Create(logger, envelope);\r\n }\r\n }\r\n\r\n private static _getDefaultAppInsightsChannelConfig(): ISenderConfig {\r\n // set default values\r\n return {\r\n endpointUrl: () => \"https://dc.services.visualstudio.com/v2/track\",\r\n emitLineDelimitedJson: () => false,\r\n maxBatchInterval: () => 15000,\r\n maxBatchSizeInBytes: () => 102400, // 100kb\r\n disableTelemetry: () => false,\r\n enableSessionStorageBuffer: () => true,\r\n isRetryDisabled: () => false,\r\n isBeaconApiDisabled: () => true,\r\n onunloadDisableBeacon: () => false,\r\n instrumentationKey: () => undefined, // Channel doesn't need iKey, it should be set already\r\n namePrefix: () => undefined,\r\n samplingPercentage: () => 100\r\n }\r\n }\r\n\r\n private static _getEmptyAppInsightsChannelConfig(): ISenderConfig {\r\n return {\r\n endpointUrl: undefined,\r\n emitLineDelimitedJson: undefined,\r\n maxBatchInterval: undefined,\r\n maxBatchSizeInBytes: undefined,\r\n disableTelemetry: undefined,\r\n enableSessionStorageBuffer: undefined,\r\n isRetryDisabled: undefined,\r\n isBeaconApiDisabled: undefined,\r\n onunloadDisableBeacon: undefined,\r\n instrumentationKey: undefined,\r\n namePrefix: undefined,\r\n samplingPercentage: undefined\r\n };\r\n }\r\n \r\n public priority: number = 1001;\r\n\r\n public identifier: string = BreezeChannelIdentifier;\r\n\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n public _senderConfig: ISenderConfig;\r\n\r\n /**\r\n * A method which will cause data to be send to the url\r\n */\r\n public _sender: SenderFunction;\r\n /**\r\n * A send buffer object\r\n */\r\n public _buffer: ISendBuffer;\r\n\r\n /**\r\n * AppId of this component parsed from some backend response.\r\n */\r\n public _appId: string;\r\n\r\n /**\r\n * Whether XMLHttpRequest object is supported. Older version of IE (8,9) do not support it.\r\n */\r\n public _XMLHttpRequestSupported: boolean = false;\r\n\r\n protected _sample: Sample;\r\n /**\r\n * How many times in a row a retryable error condition has occurred.\r\n */\r\n private _consecutiveErrors: number;\r\n\r\n /**\r\n * The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n */\r\n private _retryAt: number;\r\n\r\n /**\r\n * The time of the last send operation.\r\n */\r\n private _lastSend: number;\r\n\r\n /**\r\n * Handle to the timer for delayed sending of batches of data.\r\n */\r\n private _timeoutHandle: any;\r\n\r\n private _serializer: Serializer;\r\n\r\n public pause(): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public resume(): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public flush() {\r\n try {\r\n this.triggerSend();\r\n } catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL,\r\n _InternalMessageId.FlushFailed,\r\n \"flush failed, telemetry will not be collected: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n\r\n public onunloadFlush() {\r\n if ((this._senderConfig.onunloadDisableBeacon() === false || this._senderConfig.isBeaconApiDisabled() === false) && Util.IsBeaconApiSupported()) {\r\n try {\r\n this.triggerSend(true, this._beaconSender);\r\n } catch (e) {\r\n this.diagLog().throwInternal(LoggingSeverity.CRITICAL,\r\n _InternalMessageId.FailedToSendQueuedTelemetry,\r\n \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n } else {\r\n this.flush();\r\n }\r\n }\r\n\r\n public teardown(): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain): void {\r\n super.initialize(config, core, extensions, pluginChain);\r\n let ctx = this._getTelCtx();\r\n let identifier = this.identifier;\r\n this._serializer = new Serializer(core.logger);\r\n\r\n this._consecutiveErrors = 0;\r\n this._retryAt = null;\r\n this._lastSend = 0;\r\n this._sender = null;\r\n const defaultConfig = Sender._getDefaultAppInsightsChannelConfig();\r\n this._senderConfig = Sender._getEmptyAppInsightsChannelConfig();\r\n for (const field in defaultConfig) {\r\n this._senderConfig[field] = () => ctx.getConfig(identifier, field, defaultConfig[field]());\r\n }\r\n\r\n this._buffer = (this._senderConfig.enableSessionStorageBuffer && Util.canUseSessionStorage())\r\n ? new SessionStorageSendBuffer(this.diagLog(), this._senderConfig) : new ArraySendBuffer(this._senderConfig);\r\n this._sample = new Sample(this._senderConfig.samplingPercentage(), this.diagLog());\r\n\r\n if (!this._senderConfig.isBeaconApiDisabled() && Util.IsBeaconApiSupported()) {\r\n this._sender = this._beaconSender;\r\n } else {\r\n if (!CoreUtils.isUndefined(XMLHttpRequest)) {\r\n const testXhr = new XMLHttpRequest();\r\n if (\"withCredentials\" in testXhr) {\r\n this._sender = this._xhrSender;\r\n this._XMLHttpRequestSupported = true;\r\n } else if (!CoreUtils.isUndefined(XDomainRequest)) {\r\n this._sender = this._xdrSender; // IE 8 and 9\r\n }\r\n }\r\n }\r\n }\r\n\r\n public processTelemetry(telemetryItem: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n itemCtx = this._getTelCtx(itemCtx);\r\n \r\n try {\r\n // if master off switch is set, don't send any data\r\n if (this._senderConfig.disableTelemetry()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n\r\n // validate input\r\n if (!telemetryItem) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem.baseType) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n\r\n if (!telemetryItem.baseType) {\r\n // Default\r\n telemetryItem.baseType = \"EventData\";\r\n }\r\n\r\n // ensure a sender was constructed\r\n if (!this._sender) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, \"Sender was not initialized\");\r\n return;\r\n }\r\n \r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!this._isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent,\r\n \"Telemetry item was sampled out and not sent\", { SampleRate: this._sample.sampleRate });\r\n return;\r\n } else {\r\n telemetryItem[SampleRate] = this._sample.sampleRate;\r\n }\r\n\r\n // construct an envelope that Application Insights endpoint can understand\r\n const aiEnvelope = Sender.constructEnvelope(telemetryItem, this._senderConfig.instrumentationKey(), itemCtx.diagLog());\r\n if (!aiEnvelope) {\r\n itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n\r\n let doNotSendItem = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem.tags && telemetryItem.tags[ProcessLegacy]) {\r\n CoreUtils.arrForEach(telemetryItem.tags[ProcessLegacy], (callBack: (env: IEnvelope) => boolean | void) => {\r\n try {\r\n if (callBack && callBack(aiEnvelope) === false) {\r\n doNotSendItem = true;\r\n itemCtx.diagLog().warnToConsole(\"Telemetry processor check returns false\");\r\n }\r\n } catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n itemCtx.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, \"One of telemetry initializers failed, telemetry item will not be sent: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) }, true);\r\n }\r\n });\r\n\r\n delete telemetryItem.tags[ProcessLegacy];\r\n }\r\n if (doNotSendItem) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n\r\n // check if the incoming payload is too large, truncate if necessary\r\n const payload: string = this._serializer.serialize(aiEnvelope);\r\n\r\n // flush if we would exceed the max-size limit by adding this item\r\n const bufferPayload = this._buffer.getItems();\r\n const batch = this._buffer.batchPayloads(bufferPayload);\r\n\r\n if (batch && (batch.length + payload.length > this._senderConfig.maxBatchSizeInBytes())) {\r\n this.triggerSend();\r\n }\r\n\r\n // enqueue the payload\r\n this._buffer.enqueue(payload);\r\n\r\n // ensure an invocation timeout is set\r\n this._setupTimer();\r\n\r\n } catch (e) {\r\n itemCtx.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.FailedAddingTelemetryToBuffer,\r\n \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n\r\n // hand off the telemetry item to the next plugin\r\n this.processNext(telemetryItem, itemCtx);\r\n }\r\n\r\n /**\r\n * xhr state changes\r\n */\r\n public _xhrReadyStateChange(xhr: XMLHttpRequest, payload: string[], countOfItemsInPayload: number) {\r\n if (xhr.readyState === 4) {\r\n let response: IBackendResponse = null;\r\n if (!this._appId) {\r\n response = this._parseResponse(_getResponseText(xhr) || xhr.response);\r\n if (response && response.appId) {\r\n this._appId = response.appId;\r\n }\r\n }\r\n\r\n if ((xhr.status < 200 || xhr.status >= 300) && xhr.status !== 0) {\r\n if (!this._senderConfig.isRetryDisabled() && this._isRetriable(xhr.status)) {\r\n this._resendPayload(payload);\r\n\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Response code \" + xhr.status + \". Will retry to send \" + payload.length + \" items.\");\r\n } else {\r\n this._onError(payload, this._formatErrorMessageXhr(xhr));\r\n }\r\n } else if (Offline.isOffline()) { // offline\r\n // Note: Don't check for staus == 0, since adblock gives this code\r\n if (!this._senderConfig.isRetryDisabled()) {\r\n const offlineBackOffMultiplier = 10; // arbritrary number\r\n this._resendPayload(payload, offlineBackOffMultiplier);\r\n\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.TransmissionFailed, `. Offline - Response Code: ${xhr.status}. Offline status: ${Offline.isOffline()}. Will retry to send ${payload.length} items.`);\r\n }\r\n } else {\r\n if (xhr.status === 206) {\r\n if (!response) {\r\n response = this._parseResponse(_getResponseText(xhr) || xhr.response);\r\n }\r\n\r\n if (response && !this._senderConfig.isRetryDisabled()) {\r\n this._onPartialSuccess(payload, response);\r\n } else {\r\n this._onError(payload, this._formatErrorMessageXhr(xhr));\r\n }\r\n } else {\r\n this._consecutiveErrors = 0;\r\n this._onSuccess(payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n public triggerSend(async = true, forcedSender?: SenderFunction) {\r\n try {\r\n // Send data only if disableTelemetry is false\r\n if (!this._senderConfig.disableTelemetry()) {\r\n\r\n if (this._buffer.count() > 0) {\r\n const payload = this._buffer.getItems();\r\n\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(this, payload, async);\r\n } else {\r\n this._sender(payload, async);\r\n }\r\n }\r\n\r\n // update lastSend time to enable throttling\r\n this._lastSend = +new Date;\r\n } else {\r\n this._buffer.clear();\r\n }\r\n\r\n clearTimeout(this._timeoutHandle);\r\n this._timeoutHandle = null;\r\n this._retryAt = null;\r\n } catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n if (!Util.getIEVersion() || Util.getIEVersion() > 9) {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.TransmissionFailed,\r\n \"Telemetry transmission failed, some telemetry will be lost: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * error handler\r\n */\r\n public _onError(payload: string[], message: string, event?: ErrorEvent) {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.OnError,\r\n \"Failed to send telemetry.\",\r\n { message });\r\n\r\n this._buffer.clearSent(payload);\r\n }\r\n\r\n /**\r\n * partial success handler\r\n */\r\n public _onPartialSuccess(payload: string[], results: IBackendResponse) {\r\n const failed = [];\r\n const retry = [];\r\n\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n const errors = results.errors.reverse();\r\n for (const error of errors) {\r\n const extracted = payload.splice(error.index, 1)[0];\r\n if (this._isRetriable(error.statusCode)) {\r\n retry.push(extracted);\r\n } else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed.push(extracted);\r\n }\r\n }\r\n\r\n if (payload.length > 0) {\r\n this._onSuccess(payload, results.itemsAccepted);\r\n }\r\n\r\n if (failed.length > 0) {\r\n this._onError(failed, this._formatErrorMessageXhr(null, ['partial success', results.itemsAccepted, 'of', results.itemsReceived].join(' ')));\r\n }\r\n\r\n if (retry.length > 0) {\r\n this._resendPayload(retry);\r\n\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.TransmissionFailed, \"Partial success. \" +\r\n \"Delivered: \" + payload.length + \", Failed: \" + failed.length +\r\n \". Will retry to send \" + retry.length + \" our of \" + results.itemsReceived + \" items\");\r\n }\r\n }\r\n\r\n /**\r\n * success handler\r\n */\r\n public _onSuccess(payload: string[], countOfItemsInPayload: number) {\r\n this._buffer.clearSent(payload);\r\n }\r\n\r\n /**\r\n * xdr state changes\r\n */\r\n public _xdrOnLoad(xdr: IXDomainRequest, payload: string[]) {\r\n const responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n this._consecutiveErrors = 0;\r\n this._onSuccess(payload, 0);\r\n } else {\r\n const results = this._parseResponse(responseText);\r\n\r\n if (results && results.itemsReceived && results.itemsReceived > results.itemsAccepted\r\n && !this._senderConfig.isRetryDisabled()) {\r\n this._onPartialSuccess(payload, results);\r\n } else {\r\n this._onError(payload, this._formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n }\r\n\r\n private _isSampledIn(envelope: ITelemetryItem): boolean {\r\n return this._sample.isSampledIn(envelope);\r\n }\r\n\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n private _beaconSender(payload: string[], isAsync: boolean) {\r\n const url = this._senderConfig.endpointUrl();\r\n const batch = this._buffer.batchPayloads(payload);\r\n\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n const plainTextBatch = new Blob([batch], { type: 'text/plain;charset=UTF-8' });\r\n\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n const queued = getNavigator().sendBeacon(url, plainTextBatch);\r\n\r\n if (queued) {\r\n this._buffer.markAsSent(payload);\r\n // no response from beaconSender, clear buffer\r\n this._onSuccess(payload, payload.length);\r\n } else {\r\n this._xhrSender(payload, true);\r\n this.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n private _xhrSender(payload: string[], isAsync: boolean) {\r\n const xhr = new XMLHttpRequest();\r\n const endPointUrl = this._senderConfig.endpointUrl();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n } catch(e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr.setRequestHeader(\"Content-type\", \"application/json\");\r\n\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (Util.isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr.setRequestHeader(RequestHeaders.sdkContextHeader, RequestHeaders.sdkContextHeaderAppIdRequest);\r\n }\r\n\r\n xhr.onreadystatechange = () => this._xhrReadyStateChange(xhr, payload, payload.length);\r\n xhr.onerror = (event: ErrorEvent) => this._onError(payload, this._formatErrorMessageXhr(xhr), event);\r\n\r\n // compose an array of payloads\r\n const batch = this._buffer.batchPayloads(payload);\r\n xhr.send(batch);\r\n\r\n this._buffer.markAsSent(payload);\r\n }\r\n\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n private _parseResponse(response: any): IBackendResponse {\r\n try {\r\n if (response && response !== \"\") {\r\n const result = getJSON().parse(response);\r\n\r\n if (result && result.itemsReceived && result.itemsReceived >= result.itemsAccepted &&\r\n result.itemsReceived - result.itemsAccepted === result.errors.length) {\r\n return result;\r\n }\r\n }\r\n } catch (e) {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.CRITICAL,\r\n _InternalMessageId.InvalidBackendResponse,\r\n \"Cannot parse the response. \" + Util.getExceptionName(e),\r\n {\r\n response\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n private _resendPayload(payload: string[], linearFactor: number = 1) {\r\n if (!payload || payload.length === 0) {\r\n return;\r\n }\r\n\r\n this._buffer.clearSent(payload);\r\n this._consecutiveErrors++;\r\n\r\n for (const item of payload) {\r\n this._buffer.enqueue(item);\r\n }\r\n\r\n // setup timer\r\n this._setRetryTime(linearFactor);\r\n this._setupTimer();\r\n }\r\n\r\n /** \r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n private _setRetryTime(linearFactor: number) {\r\n const SlotDelayInSeconds = 10;\r\n let delayInSeconds: number;\r\n\r\n if (this._consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n } else {\r\n const backOffSlot = (Math.pow(2, this._consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n let backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n\r\n // TODO: Log the backoff time like the C# version does.\r\n const retryAfterTimeSpan = Date.now() + (delayInSeconds * 1000);\r\n\r\n // TODO: Log the retry at time like the C# version does.\r\n this._retryAt = retryAfterTimeSpan;\r\n }\r\n\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n private _setupTimer() {\r\n if (!this._timeoutHandle) {\r\n const retryInterval = this._retryAt ? Math.max(0, this._retryAt - Date.now()) : 0;\r\n const timerValue = Math.max(this._senderConfig.maxBatchInterval(), retryInterval);\r\n\r\n this._timeoutHandle = setTimeout(() => {\r\n this.triggerSend();\r\n }, timerValue);\r\n }\r\n }\r\n\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n private _isRetriable(statusCode: number): boolean {\r\n return statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 503; // Service unavailable.\r\n }\r\n\r\n private _formatErrorMessageXhr(xhr: XMLHttpRequest, message?: string): string {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n private _xdrSender(payload: string[], isAsync: boolean) {\r\n let _window = getWindow();\r\n const xdr = new XDomainRequest();\r\n xdr.onload = () => this._xdrOnLoad(xdr, payload);\r\n xdr.onerror = (event: ErrorEvent) => this._onError(payload, this._formatErrorMessageXdr(xdr), event);\r\n\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n const hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (this._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n this.diagLog().throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.TransmissionFailed, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n\r\n this._buffer.clear();\r\n return;\r\n }\r\n\r\n const endpointUrl = this._senderConfig.endpointUrl().replace(/^(https?:)/, \"\");\r\n xdr.open('POST', endpointUrl);\r\n\r\n // compose an array of payloads\r\n const batch = this._buffer.batchPayloads(payload);\r\n xdr.send(batch);\r\n\r\n this._buffer.markAsSent(payload);\r\n }\r\n\r\n private _formatErrorMessageXdr(xdr: IXDomainRequest, message?: string): string {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n\r\n return message;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ISession, Util, DateTimeUtils } from '@microsoft/applicationinsights-common';\r\nimport { IDiagnosticLogger, _InternalMessageId, LoggingSeverity, CoreUtils, DiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport interface ISessionConfig {\r\n sessionRenewalMs?: () => number;\r\n sessionExpirationMs?: () => number;\r\n cookieDomain?: () => string;\r\n namePrefix?: () => string;\r\n}\r\n\r\nexport class Session implements ISession {\r\n /**\r\n * The session ID.\r\n */\r\n public id?: string;\r\n\r\n /**\r\n * The date at which this guid was genereated.\r\n * Per the spec the ID will be regenerated if more than acquisitionSpan milliseconds ellapse from this time.\r\n */\r\n public acquisitionDate?: number;\r\n\r\n /**\r\n * The date at which this session ID was last reported.\r\n * This value should be updated whenever telemetry is sent using this ID.\r\n * Per the spec the ID will be regenerated if more than renewalSpan milliseconds elapse from this time with no activity.\r\n */\r\n public renewalDate?: number;\r\n}\r\n\r\nexport class _SessionManager {\r\n\r\n public static acquisitionSpan = 86400000; // 24 hours in ms\r\n public static renewalSpan = 1800000; // 30 minutes in ms\r\n public static cookieUpdateInterval = 60000 // 1 minute in ms\r\n private static cookieNameConst = 'ai_session';\r\n public automaticSession: Session;\r\n public config: ISessionConfig;\r\n\r\n private cookieUpdatedTimestamp: number;\r\n private _logger: IDiagnosticLogger;\r\n private _storageNamePrefix: () => string;\r\n\r\n constructor(config: ISessionConfig, logger?: IDiagnosticLogger) {\r\n if(CoreUtils.isNullOrUndefined(logger)) {\r\n this._logger = new DiagnosticLogger();\r\n } else {\r\n this._logger = logger;\r\n }\r\n\r\n if (!config) {\r\n config = ({} as any);\r\n }\r\n\r\n if (!(typeof config.sessionExpirationMs === \"function\")) {\r\n config.sessionExpirationMs = () => _SessionManager.acquisitionSpan;\r\n }\r\n\r\n if (!(typeof config.sessionRenewalMs === \"function\")) {\r\n config.sessionRenewalMs = () => _SessionManager.renewalSpan;\r\n }\r\n\r\n this.config = config;\r\n this._storageNamePrefix = () => this.config.namePrefix && this.config.namePrefix() ? _SessionManager.cookieNameConst + this.config.namePrefix() : _SessionManager.cookieNameConst;\r\n\r\n this.automaticSession = new Session();\r\n }\r\n\r\n public update() {\r\n if (!this.automaticSession.id) {\r\n this.initializeAutomaticSession();\r\n }\r\n\r\n const now = DateTimeUtils.Now();\r\n\r\n const acquisitionExpired = this.config.sessionExpirationMs() === 0 ? false : now - this.automaticSession.acquisitionDate > this.config.sessionExpirationMs();\r\n const renewalExpired = this.config.sessionExpirationMs() === 0 ? false : now - this.automaticSession.renewalDate > this.config.sessionRenewalMs();\r\n\r\n // renew if acquisitionSpan or renewalSpan has ellapsed\r\n if (acquisitionExpired || renewalExpired) {\r\n // update automaticSession so session state has correct id\r\n this.renew();\r\n } else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!this.cookieUpdatedTimestamp || now - this.cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n this.automaticSession.renewalDate = now;\r\n this.setCookie(this.automaticSession.id, this.automaticSession.acquisitionDate, this.automaticSession.renewalDate);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n public backup() {\r\n this.setStorage(this.automaticSession.id, this.automaticSession.acquisitionDate, this.automaticSession.renewalDate);\r\n }\r\n\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n */\r\n private initializeAutomaticSession() {\r\n const cookie = Util.getCookie(this._logger, this._storageNamePrefix());\r\n if (cookie && typeof cookie.split === \"function\") {\r\n this.initializeAutomaticSessionWithData(cookie);\r\n } else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n const storage = Util.getStorage(this._logger, this._storageNamePrefix());\r\n if (storage) {\r\n this.initializeAutomaticSessionWithData(storage);\r\n }\r\n }\r\n\r\n if (!this.automaticSession.id) {\r\n this.renew();\r\n }\r\n }\r\n\r\n /**\r\n * Extract id, aquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n */\r\n private initializeAutomaticSessionWithData(sessionData: string) {\r\n const params = sessionData.split(\"|\");\r\n\r\n if (params.length > 0) {\r\n this.automaticSession.id = params[0];\r\n }\r\n\r\n try {\r\n if (params.length > 1) {\r\n const acq = +params[1];\r\n this.automaticSession.acquisitionDate = +new Date(acq);\r\n this.automaticSession.acquisitionDate = this.automaticSession.acquisitionDate > 0 ? this.automaticSession.acquisitionDate : 0;\r\n }\r\n\r\n if (params.length > 2) {\r\n const renewal = +params[2];\r\n this.automaticSession.renewalDate = +new Date(renewal);\r\n this.automaticSession.renewalDate = this.automaticSession.renewalDate > 0 ? this.automaticSession.renewalDate : 0;\r\n }\r\n } catch (e) {\r\n this._logger.throwInternal(LoggingSeverity.CRITICAL,\r\n\r\n _InternalMessageId.ErrorParsingAISessionCookie,\r\n \"Error parsing ai_session cookie, session will be reset: \" + Util.getExceptionName(e),\r\n { exception: Util.dump(e) });\r\n }\r\n\r\n if (this.automaticSession.renewalDate === 0) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING,\r\n _InternalMessageId.SessionRenewalDateIsZero,\r\n \"AI session renewal date is 0, session will be reset.\");\r\n }\r\n }\r\n\r\n private renew() {\r\n const now = DateTimeUtils.Now();\r\n\r\n this.automaticSession.id = Util.newId();\r\n this.automaticSession.acquisitionDate = now;\r\n this.automaticSession.renewalDate = now;\r\n\r\n this.setCookie(this.automaticSession.id, this.automaticSession.acquisitionDate, this.automaticSession.renewalDate);\r\n\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!Util.canUseLocalStorage()) {\r\n this._logger.throwInternal(LoggingSeverity.WARNING,\r\n _InternalMessageId.BrowserDoesNotSupportLocalStorage,\r\n \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n\r\n private setCookie(guid: string, acq: number, renewal: number) {\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n const acquisitionExpiry = acq + this.config.sessionExpirationMs();\r\n const renewalExpiry = renewal + this.config.sessionRenewalMs();\r\n const cookieExpiry = new Date();\r\n const cookie = [guid, acq, renewal];\r\n\r\n if (acquisitionExpiry < renewalExpiry) {\r\n cookieExpiry.setTime(acquisitionExpiry);\r\n } else {\r\n cookieExpiry.setTime(renewalExpiry);\r\n }\r\n\r\n const cookieDomnain = this.config.cookieDomain ? this.config.cookieDomain() : null;\r\n\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires. \r\n // Another browser instance does not inherit this cookie.\r\n const UTCString = this.config.sessionExpirationMs() === 0 ? '0' : cookieExpiry.toUTCString();\r\n Util.setCookie(this._logger, this._storageNamePrefix(), cookie.join('|') + ';expires=' + UTCString, cookieDomnain);\r\n\r\n this.cookieUpdatedTimestamp = DateTimeUtils.Now();\r\n }\r\n\r\n private setStorage(guid: string, acq: number, renewal: number) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n Util.setStorage(this._logger, this._storageNamePrefix(), [guid, acq, renewal].join('|'));\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IApplication } from '@microsoft/applicationinsights-common';\r\n\r\nexport class Application implements IApplication {\r\n /**\r\n * The application version.\r\n */\r\n public ver: string;\r\n\r\n /**\r\n * The application build version.\r\n */\r\n public build: string;\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IDevice } from '@microsoft/applicationinsights-common';\r\n\r\nexport class Device implements IDevice {\r\n\r\n /**\r\n * The type for the current device.\r\n */\r\n public deviceClass: string;\r\n\r\n /**\r\n * A device unique ID.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * The application screen resolution.\r\n */\r\n resolution: string;\r\n\r\n /**\r\n * The device model for the current device.\r\n */\r\n public model: string;\r\n\r\n /**\r\n * Device identifier known at instrumentation time\r\n */\r\n public localId: string;\r\n\r\n /**\r\n * Device identifier known at instrumentation time\r\n */\r\n public ip: string;\r\n\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n constructor() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { IInternal } from '@microsoft/applicationinsights-common';\r\nimport { ITelemetryConfig } from '../Interfaces/ITelemetryConfig';\r\n\r\nconst Version = \"2.5.4\";\r\n\r\nexport class Internal implements IInternal {\r\n\r\n /**\r\n * The SDK version used to create this telemetry item.\r\n */\r\n public sdkVersion: string;\r\n\r\n /**\r\n * The SDK agent version.\r\n */\r\n public agentVersion: string;\r\n\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n constructor(config: ITelemetryConfig) {\r\n this.sdkVersion = (config.sdkExtension && config.sdkExtension() ? config.sdkExtension() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ITelemetryConfig } from '../Interfaces/ITelemetryConfig';\r\nimport { Util, IUser } from '@microsoft/applicationinsights-common';\r\nimport { IDiagnosticLogger, _InternalMessageId, LoggingSeverity, CoreUtils } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class User implements IUser {\r\n\r\n static cookieSeparator: string = '|';\r\n static userCookieName: string = 'ai_user';\r\n static authUserCookieName: string = 'ai_authUser';\r\n\r\n /**\r\n * The telemetry configuration.\r\n */\r\n public config: ITelemetryConfig;\r\n\r\n /**\r\n * The user ID.\r\n */\r\n public id: string;\r\n\r\n /**\r\n * Authenticated user id\r\n */\r\n public authenticatedId: string;\r\n\r\n /**\r\n * The localId\r\n */\r\n public localId: string;\r\n\r\n /**\r\n * The account ID.\r\n */\r\n public accountId: string;\r\n\r\n /**\r\n * The account acquisition date.\r\n */\r\n public accountAcquisitionDate: string;\r\n\r\n public isNewUser = false;\r\n\r\n private _logger: IDiagnosticLogger;\r\n\r\n constructor(config: ITelemetryConfig, logger: IDiagnosticLogger) {\r\n this._logger = logger;\r\n\r\n // get userId or create new one if none exists\r\n const cookie = Util.getCookie(this._logger, User.userCookieName);\r\n if (cookie) {\r\n this.isNewUser = false;\r\n const params = cookie.split(User.cookieSeparator);\r\n if (params.length > 0) {\r\n this.id = params[0];\r\n }\r\n }\r\n\r\n this.config = config;\r\n\r\n if (!this.id) {\r\n this.id = Util.newId();\r\n const date = new Date();\r\n const acqStr = CoreUtils.toISOString(date);\r\n this.accountAcquisitionDate = acqStr;\r\n this.isNewUser = true;\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 * 1000 = 31536000000 \r\n date.setTime(date.getTime() + 31536000000);\r\n const newCookie = [this.id, acqStr];\r\n const cookieDomain = this.config.cookieDomain ? this.config.cookieDomain() : undefined;\r\n\r\n Util.setCookie(this._logger, User.userCookieName, newCookie.join(User.cookieSeparator) + ';expires=' + date.toUTCString(), cookieDomain);\r\n\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n const name = config.namePrefix && config.namePrefix() ? config.namePrefix() + 'ai_session' : 'ai_session';\r\n Util.removeStorage(this._logger, name);\r\n }\r\n\r\n // We still take the account id from the ctor param for backward compatibility. \r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n this.accountId = config.accountId ? config.accountId() : undefined;\r\n\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n let authCookie = Util.getCookie(this._logger, User.authUserCookieName);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n const authCookieString = authCookie.split(User.cookieSeparator);\r\n if (authCookieString[0]) {\r\n this.authenticatedId = authCookieString[0];\r\n }\r\n if (authCookieString.length > 1 && authCookieString[1]) {\r\n this.accountId = authCookieString[1];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the authenticated user id and the account id in this session.\r\n * \r\n * @param authenticatedUserId {string} - The authenticated user id. A unique and persistent string that represents each authenticated user in the service.\r\n * @param accountId {string} - An optional string to represent the account associated with the authenticated user.\r\n */\r\n public setAuthenticatedUserContext(authenticatedUserId: string, accountId?: string, storeInCookie = false) {\r\n\r\n // Validate inputs to ensure no cookie control characters.\r\n const isInvalidInput = !this.validateUserInput(authenticatedUserId) || (accountId && !this.validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n this._logger.throwInternal(\r\n LoggingSeverity.WARNING,\r\n _InternalMessageId.SetAuthContextFailedAccountName,\r\n \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\",\r\n true);\r\n return;\r\n }\r\n\r\n // Create cookie string.\r\n this.authenticatedId = authenticatedUserId;\r\n let authCookie = this.authenticatedId;\r\n if (accountId) {\r\n this.accountId = accountId;\r\n authCookie = [this.authenticatedId, this.accountId].join(User.cookieSeparator);\r\n }\r\n\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n Util.setCookie(this._logger, User.authUserCookieName, encodeURI(authCookie), this.config.cookieDomain());\r\n }\r\n }\r\n\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {} \r\n */\r\n public clearAuthenticatedUserContext() {\r\n this.authenticatedId = null;\r\n this.accountId = null;\r\n Util.deleteCookie(this._logger, User.authUserCookieName);\r\n }\r\n\r\n private validateUserInput(id: string): boolean {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== 'string' ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ILocation } from '@microsoft/applicationinsights-common';\r\n\r\nexport class Location implements ILocation {\r\n\r\n /**\r\n * Client IP address for reverse lookup\r\n */\r\n public ip: string;\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { Util, ITelemetryTrace, ITraceState, DataSanitizer } from '@microsoft/applicationinsights-common';\r\nimport { getLocation, IDiagnosticLogger } from '@microsoft/applicationinsights-core-js';\r\n\r\nexport class TelemetryTrace implements ITelemetryTrace {\r\n\r\n public traceID: string;\r\n public parentID: string;\r\n public traceState: ITraceState;\r\n public name: string;\r\n\r\n constructor(id?: string, parentId?: string, name?: string, logger?: IDiagnosticLogger) {\r\n this.traceID = id || Util.generateW3CId();\r\n this.parentID = parentId;\r\n this.name = name;\r\n let location = getLocation();\r\n if (!name && location && location.pathname) {\r\n this.name = location.pathname;\r\n }\r\n this.name = DataSanitizer.sanitizeString(logger, this.name);\r\n }\r\n}","/**\r\n * PropertiesPlugin.ts\r\n * @copyright Microsoft 2018\r\n */\r\n\r\nimport { ITelemetryItem, IProcessTelemetryContext, IDiagnosticLogger, CoreUtils, hasWindow } from '@microsoft/applicationinsights-core-js';\r\nimport { Session, _SessionManager } from './Context/Session';\r\nimport { Extensions, ITelemetryContext, IOperatingSystem, ITelemetryTrace, IWeb, SampleRate, CtxTagKeys } from '@microsoft/applicationinsights-common';\r\nimport { Application } from './Context/Application';\r\nimport { Device } from './Context/Device';\r\nimport { Internal } from './Context/Internal';\r\nimport { User } from './Context/User';\r\nimport { Location } from './Context/Location';\r\nimport { ITelemetryConfig } from './Interfaces/ITelemetryConfig';\r\nimport { TelemetryTrace } from './Context/TelemetryTrace';\r\n\r\nexport class TelemetryContext implements ITelemetryContext {\r\n\r\n public application: Application; // The object describing a component tracked by this object - legacy\r\n public device: Device; // The object describing a device tracked by this object.\r\n public location: Location; // The object describing a location tracked by this object -legacy\r\n public telemetryTrace: TelemetryTrace; // The object describing a operation tracked by this object.\r\n public user: User; // The object describing a user tracked by this object.\r\n public internal: Internal; // legacy\r\n public session: Session; // The object describing a session tracked by this object.\r\n public sessionManager: _SessionManager; // The session manager that manages session on the base of cookies.\r\n public os: IOperatingSystem;\r\n public web: IWeb;\r\n public appId: () => string;\r\n\r\n constructor(logger: IDiagnosticLogger, defaultConfig: ITelemetryConfig) {\r\n if (hasWindow()) {\r\n this.sessionManager = new _SessionManager(defaultConfig, logger);\r\n this.application = new Application();\r\n this.device = new Device();\r\n this.internal = new Internal(defaultConfig);\r\n this.location = new Location();\r\n this.user = new User(defaultConfig, logger);\r\n this.telemetryTrace = new TelemetryTrace(undefined, undefined, undefined, logger);\r\n this.session = new Session();\r\n }\r\n this.appId = () => null;\r\n }\r\n\r\n public applySessionContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n const sessionContext = this.session || (this.sessionManager && this.sessionManager.automaticSession);\r\n if (sessionContext) {\r\n if (typeof sessionContext.id === \"string\") {\r\n event.ext.app.sesId = sessionContext.id;\r\n }\r\n }\r\n\r\n if (this.session) {\r\n // If customer set session info, apply his context; otherwise apply context automatically generated\r\n if (typeof this.session.id === \"string\") {\r\n event.ext.app.sesId = this.session.id;\r\n } else {\r\n event.ext.app.sesId = this.sessionManager.automaticSession.id;\r\n }\r\n }\r\n }\r\n\r\n public applyOperatingSystemContxt(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.os && this.os.name) {\r\n event.ext.os = this.os;\r\n }\r\n }\r\n\r\n public applyApplicationContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.application) {\r\n\r\n if (typeof this.application.ver === \"string\") {\r\n event.tags[CtxTagKeys.applicationVersion] = this.application.ver;\r\n }\r\n if (typeof this.application.build === \"string\") {\r\n event.tags[CtxTagKeys.applicationBuild] = this.application.build;\r\n }\r\n }\r\n }\r\n\r\n public applyDeviceContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n\r\n if (this.device) {\r\n if (typeof this.device.id === \"string\") {\r\n event.ext.device.localId = this.device.id;\r\n }\r\n\r\n if (typeof this.device.ip === \"string\") {\r\n event.ext.device.ip = this.device.ip;\r\n }\r\n\r\n if (typeof this.device.model === \"string\") {\r\n event.ext.device.model = this.device.model;\r\n }\r\n\r\n if (typeof this.device.deviceClass === \"string\") {\r\n event.ext.device.deviceClass = this.device.deviceClass;\r\n }\r\n }\r\n }\r\n\r\n public applyInternalContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.internal) {\r\n if (typeof this.internal.agentVersion === \"string\") {\r\n event.tags[CtxTagKeys.internalAgentVersion] = this.internal.agentVersion; // not mapped in CS 4.0\r\n }\r\n if (typeof this.internal.sdkVersion === \"string\") {\r\n event.tags[CtxTagKeys.internalSdkVersion] = this.internal.sdkVersion;\r\n }\r\n }\r\n }\r\n\r\n public applyLocationContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.location) {\r\n if (typeof this.location.ip === \"string\") {\r\n event.tags[CtxTagKeys.locationIp] = this.location.ip;\r\n }\r\n }\r\n }\r\n\r\n public applyOperationContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.telemetryTrace) {\r\n const trace = event.ext.trace || ({traceID: undefined, parentID: undefined} as ITelemetryTrace);\r\n if (typeof this.telemetryTrace.traceID === \"string\") {\r\n trace.traceID = this.telemetryTrace.traceID;\r\n }\r\n\r\n if (typeof this.telemetryTrace.name === \"string\") {\r\n trace.name = this.telemetryTrace.name;\r\n }\r\n\r\n if (typeof this.telemetryTrace.parentID === \"string\") {\r\n trace.parentID = this.telemetryTrace.parentID;\r\n }\r\n\r\n event.ext.trace = trace;\r\n }\r\n }\r\n\r\n public applyWebContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.web) {\r\n event.ext.web = event.ext.web || {};\r\n event.ext.web = this.web;\r\n }\r\n }\r\n\r\n public applyUserContext(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (this.user) {\r\n if (!event.tags) {\r\n event.tags = [];\r\n }\r\n\r\n // stays in tags\r\n if (typeof this.user.accountId === \"string\") {\r\n const item = {};\r\n event.tags[CtxTagKeys.userAccountId] = this.user.accountId;\r\n }\r\n\r\n // CS 4.0\r\n if (typeof this.user.id === \"string\") {\r\n event.ext.user.id = this.user.id;\r\n }\r\n\r\n if (typeof this.user.authenticatedId === \"string\") {\r\n event.ext.user.authId = this.user.authenticatedId;\r\n }\r\n }\r\n }\r\n\r\n public cleanUp(event:ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (event.ext[Extensions.DeviceExt] && CoreUtils.objKeys(event.ext[Extensions.DeviceExt]).length === 0) {\r\n delete event.ext[Extensions.DeviceExt];\r\n }\r\n if (event.ext[Extensions.UserExt] && CoreUtils.objKeys(event.ext[Extensions.UserExt]).length === 0) {\r\n delete event.ext[Extensions.UserExt];\r\n }\r\n if (event.ext[Extensions.WebExt] && CoreUtils.objKeys(event.ext[Extensions.WebExt]).length === 0) {\r\n delete event.ext[Extensions.WebExt];\r\n }\r\n if (event.ext[Extensions.OSExt] && CoreUtils.objKeys(event.ext[Extensions.OSExt]).length === 0) {\r\n delete event.ext[Extensions.OSExt];\r\n }\r\n if (event.ext[Extensions.AppExt] && CoreUtils.objKeys(event.ext[Extensions.AppExt]).length === 0) {\r\n delete event.ext[Extensions.AppExt];\r\n }\r\n if (event.ext[Extensions.TraceExt] && CoreUtils.objKeys(event.ext[Extensions.TraceExt]).length === 0) {\r\n delete event.ext[Extensions.TraceExt];\r\n }\r\n }\r\n}","/**\r\n * PropertiesPlugin.ts\r\n * @copyright Microsoft 2018\r\n */\r\n\r\nimport {\r\n BaseTelemetryPlugin, IConfiguration, CoreUtils,\r\n IAppInsightsCore, IPlugin, ITelemetryItem, IProcessTelemetryContext, _InternalLogMessage, LoggingSeverity, _InternalMessageId, getNavigator,\r\n ITelemetryPluginChain \r\n} from '@microsoft/applicationinsights-core-js';\r\nimport { TelemetryContext } from './TelemetryContext';\r\nimport { PageView, ConfigurationManager,\r\n IConfig, BreezeChannelIdentifier, PropertiesPluginIdentifier, IPropertiesPlugin, Extensions, Util } from '@microsoft/applicationinsights-common';\r\nimport { ITelemetryConfig } from './Interfaces/ITelemetryConfig';\r\n\r\nexport default class PropertiesPlugin extends BaseTelemetryPlugin implements IPropertiesPlugin {\r\n\r\n public static getDefaultConfig(): ITelemetryConfig {\r\n const defaultConfig: ITelemetryConfig = {\r\n instrumentationKey: () => undefined,\r\n accountId: () => null,\r\n sessionRenewalMs: () => 30 * 60 * 1000,\r\n samplingPercentage: () => 100,\r\n sessionExpirationMs: () => 24 * 60 * 60 * 1000,\r\n cookieDomain: () => null,\r\n sdkExtension: () => null,\r\n isBrowserLinkTrackingEnabled: () => false,\r\n appId: () => null,\r\n namePrefix: () => undefined\r\n }\r\n return defaultConfig;\r\n }\r\n public context: TelemetryContext;\r\n\r\n public priority = 110;\r\n public identifier = PropertiesPluginIdentifier;\r\n private _breezeChannel: IPlugin; // optional. If exists, grab appId from it\r\n\r\n private _extensionConfig: ITelemetryConfig;\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?:ITelemetryPluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n let ctx = this._getTelCtx();\r\n let identifier = this.identifier;\r\n const defaultConfig: ITelemetryConfig = PropertiesPlugin.getDefaultConfig();\r\n this._extensionConfig = this._extensionConfig || PropertiesPlugin.getDefaultConfig();\r\n for (const field in defaultConfig) {\r\n this._extensionConfig[field] = () => ctx.getConfig(identifier, field, defaultConfig[field]());\r\n }\r\n\r\n this.context = new TelemetryContext(core.logger, this._extensionConfig);\r\n this._breezeChannel = Util.getExtension(extensions, BreezeChannelIdentifier);\r\n this.context.appId = () => this._breezeChannel ? this._breezeChannel[\"_appId\"] : null;\r\n }\r\n\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n if (CoreUtils.isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n } else {\r\n itemCtx = this._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n\r\n if (this.context.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof this.context.session.id !== \"string\") {\r\n this.context.sessionManager.update();\r\n }\r\n }\r\n\r\n this._processTelemetryInternal(event, itemCtx);\r\n\r\n if (this.context && this.context.user && this.context.user.isNewUser) {\r\n this.context.user.isNewUser = false;\r\n const message = new _InternalLogMessage(_InternalMessageId.SendBrowserInfoOnUserInit, ((getNavigator()||{} as any).userAgent||\"\"));\r\n itemCtx.diagLog().logInternalMessage(LoggingSeverity.CRITICAL, message);\r\n }\r\n\r\n this.processNext(event, itemCtx);\r\n }\r\n }\r\n\r\n private _processTelemetryInternal(event: ITelemetryItem, itemCtx: IProcessTelemetryContext) {\r\n // set part A fields\r\n if (!event.tags) {\r\n event.tags = [];\r\n }\r\n\r\n if (!event.ext) {\r\n event.ext = {};\r\n }\r\n\r\n let ext = event.ext;\r\n ext[Extensions.DeviceExt] = ext[Extensions.DeviceExt] || {};\r\n ext[Extensions.WebExt] = ext[Extensions.WebExt] || {};\r\n ext[Extensions.UserExt] = ext[Extensions.UserExt] || {};\r\n ext[Extensions.OSExt] = ext[Extensions.OSExt] || {};\r\n ext[Extensions.AppExt] = ext[Extensions.AppExt] || {};\r\n ext[Extensions.TraceExt] = ext[Extensions.TraceExt] || {};\r\n\r\n let context = this.context;\r\n context.applySessionContext(event, itemCtx);\r\n context.applyApplicationContext(event, itemCtx);\r\n context.applyDeviceContext(event, itemCtx);\r\n context.applyOperationContext(event, itemCtx);\r\n context.applyUserContext(event, itemCtx);\r\n context.applyOperatingSystemContxt(event, itemCtx);\r\n context.applyWebContext(event, itemCtx);\r\n\r\n context.applyLocationContext(event, itemCtx); // legacy tags\r\n context.applyInternalContext(event, itemCtx); // legacy tags\r\n context.cleanUp(event, itemCtx);\r\n }\r\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { \r\n IInstrumentHooksCallbacks, IInstrumentHooks, IInstrumentHook, IInstrumentCallDetails, InstrumentorHooksCallback \r\n} from \"../JavaScriptSDK.Interfaces/IInstrumentHooks\";\r\nimport {\r\n strFunction, strPrototype\r\n} from \"./EnvUtils\"\r\nimport { CoreUtils } from './CoreUtils';\r\n\r\nconst aiInstrumentHooks = \"_aiHooks\";\r\n\r\nconst enum CallbackType {\r\n Request = 0,\r\n Response = 1,\r\n HookError = 2,\r\n FunctionError = 3\r\n};\r\n\r\nconst cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n\r\n/** @ignore */\r\nfunction _arrLoop(arr:T[], fn:(value:T, idx:number) => boolean|number|void) {\r\n if (arr) {\r\n for (let lp = 0; lp < arr.length; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n } \r\n }\r\n}\r\n\r\n/** @ignore */\r\nfunction _doCallbacks(hooks:IInstrumentHook[], callDetails: IInstrumentCallDetails, cbArgs:any[], hookCtx:any[], type:CallbackType): void {\r\n if (type >= CallbackType.Request && type <= CallbackType.HookError) {\r\n _arrLoop(hooks, (hook, idx) => {\r\n let cbks = hook.cbks;\r\n let cb:InstrumentorHooksCallback = cbks[cbNames[type]];\r\n if (cb) {\r\n \r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = () => {\r\n let ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n\r\n try {\r\n cb.apply(callDetails.inst, cbArgs);\r\n } catch (err) {\r\n let orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n let hookErrorCb:InstrumentorHooksCallback = cbks[cbNames[CallbackType.HookError]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb.apply(callDetails.inst, cbArgs);\r\n }\r\n } catch(e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n } finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook:IInstrumentHooks) {\r\n \r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n let funcThis = this;\r\n // Capture the original arguments passed to the method\r\n let orgArgs = arguments as any;\r\n let hooks = aiHook.h;\r\n\r\n let funcArgs:IInstrumentCallDetails = {\r\n name: aiHook.n,\r\n inst: funcThis,\r\n ctx: null,\r\n set: _replaceArg\r\n };\r\n\r\n let hookCtx: any[] = [];\r\n let cbArgs = _createArgs([funcArgs], orgArgs);\r\n\r\n function _createArgs(target:any[], theArgs:any[]): any[] {\r\n _arrLoop((theArgs as any), (arg) => {\r\n target.push(arg);\r\n });\r\n\r\n return target;\r\n }\r\n\r\n function _replaceArg(idx:number, value:any) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, CallbackType.Request);\r\n\r\n // Call the original function was called\r\n let theFunc = aiHook.f;\r\n try {\r\n funcArgs.rslt = theFunc.apply(funcThis, orgArgs);\r\n } catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, CallbackType.FunctionError);\r\n\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, CallbackType.Response);\r\n\r\n return funcArgs.rslt;\r\n };\r\n}\r\n\r\n/** @ignore */\r\nfunction _getOwner(target:any, name:string, checkPrototype:boolean): any {\r\n let owner = null;\r\n if (target) {\r\n if (CoreUtils.hasOwnProperty(target, name)) {\r\n owner = target;\r\n } else if (checkPrototype) {\r\n owner = _getOwner(target[strPrototype], name, false);\r\n }\r\n }\r\n\r\n return owner;\r\n}\r\n\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target:any, funcName:string, callbacks: IInstrumentHooksCallbacks): IInstrumentHook {\r\n if (target) {\r\n return InstrumentFunc(target[strPrototype], funcName, callbacks, false);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target:any, funcNames:string[], callbacks: IInstrumentHooksCallbacks): IInstrumentHook[] {\r\n if (target) {\r\n return InstrumentFuncs(target[strPrototype], funcNames, callbacks, false);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target:any, funcName:string, callbacks: IInstrumentHooksCallbacks, checkPrototype:boolean = true): IInstrumentHook {\r\n if (target && funcName && callbacks) {\r\n let owner = _getOwner(target, funcName, checkPrototype);\r\n let fn = owner[funcName]\r\n if (typeof fn === strFunction) {\r\n let aiHook:IInstrumentHooks = fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n\r\n // Override (hook) the original function\r\n let newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n\r\n const theHook: IInstrumentHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function() {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n let id = this.id;\r\n _arrLoop(aiHook.h, (hook, idx) => {\r\n if (hook.id === id) {\r\n aiHook.h.splice(idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n }\r\n\r\n aiHook.i ++;\r\n aiHook.h.push(theHook);\r\n\r\n return theHook;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target:any, funcNames:string[], callbacks: IInstrumentHooksCallbacks, checkPrototype:boolean = true): IInstrumentHook[] {\r\n let hooks: IInstrumentHook[] = null;\r\n _arrLoop(funcNames, (funcName) => {\r\n let hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n\r\n hooks.push(hook);\r\n }\r\n });\r\n\r\n return hooks;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { DataSanitizer, UrlHelper, DateTimeUtils, Util } from '@microsoft/applicationinsights-common';\r\nimport { CoreUtils, normalizeJsName } from '@microsoft/applicationinsights-core-js';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar strProperties = \"properties\";\r\nvar _objKeys = CoreUtils.objKeys;\r\nvar _arrForEach = CoreUtils.arrForEach;\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = DateTimeUtils.GetDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, Util.msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData.perfTiming;\r\n var props = dependency[strProperties] || {};\r\n var propsSet = 0;\r\n var _isString = CoreUtils.isString;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strDuration = \"duration\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[strDuration];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, strDuration, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n _arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n _arrForEach(_objKeys(value), function (key) {\r\n var val = value[key];\r\n if (key !== strName && _isString(val) || CoreUtils.isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !_isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData.perfMark) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[strProperties] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self.openDone = false;\r\n self.setRequestHeaderDone = false;\r\n self.sendDone = false;\r\n self.abortDone = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self.stateChangeAttached = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceID, spanID, logger) {\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self.perfMark = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self.requestHeaders = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self.ajaxTotalDuration = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self.requestUrl = null;\r\n self.requestSize = 0;\r\n self.method = null;\r\n self.status = null;\r\n self.requestSentTime = null;\r\n self.responseStartedTime = null;\r\n self.responseFinishedTime = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self.traceID = traceID;\r\n self.spanID = spanID;\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self.requestUrl ? UrlHelper.getAbsoluteUrl(self.requestUrl) : null;\r\n };\r\n self.getPathName = function () {\r\n return self.requestUrl ? DataSanitizer.sanitizeUrl(_logger, UrlHelper.getCompleteUrl(self.method, self.requestUrl)) : null;\r\n };\r\n self.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(DateTimeUtils.GetDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self.ajaxTotalDuration < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self.traceID + \".\" + self.spanID,\r\n target: self.getAbsoluteUrl(),\r\n name: self.getPathName(),\r\n type: ajaxType,\r\n duration: self.ajaxTotalDuration,\r\n success: (+(self.status)) >= 200 && (+(self.status)) < 400,\r\n responseCode: (+(self.status)),\r\n method: self.method\r\n },\r\n _a[strProperties] = { HttpMethod: self.method },\r\n _a);\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (_objKeys(self.requestHeaders).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].requestHeaders = self.requestHeaders;\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response.correlationContext;\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response.headerMap) {\r\n if (_objKeys(response.headerMap).length > 0) {\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n dependency[strProperties].responseHeaders = response.headerMap;\r\n }\r\n }\r\n if (self.status >= 400) {\r\n var responseType = response.type;\r\n dependency[strProperties] = dependency[strProperties] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n dependency[strProperties][strResponseText] = response[strResponseText] ? response.statusText + \" - \" + response[strResponseText] : response.statusText;\r\n }\r\n if (responseType === \"json\") {\r\n dependency[strProperties][strResponseText] = response.response ? response.statusText + \" - \" + JSON.stringify(response.response) : response.statusText;\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n var _a;\r\n };\r\n });\r\n }\r\n ajaxRecord.prototype.getAbsoluteUrl = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPathName = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n;\r\n//# sourceMappingURL=ajaxRecord.js.map","import { Util } from '@microsoft/applicationinsights-common';\r\nvar Traceparent = /** @class */ (function () {\r\n function Traceparent(traceId, spanId) {\r\n var self = this;\r\n self.traceFlag = Traceparent.DEFAULT_TRACE_FLAG;\r\n self.version = Traceparent.DEFAULT_VERSION;\r\n if (traceId && Traceparent.isValidTraceId(traceId)) {\r\n self.traceId = traceId;\r\n }\r\n else {\r\n self.traceId = Util.generateW3CId();\r\n }\r\n if (spanId && Traceparent.isValidSpanId(spanId)) {\r\n self.spanId = spanId;\r\n }\r\n else {\r\n self.spanId = Util.generateW3CId().substr(0, 16);\r\n }\r\n }\r\n Traceparent.isValidTraceId = function (id) {\r\n return id.match(/^[0-9a-f]{32}$/) && id !== \"00000000000000000000000000000000\";\r\n };\r\n Traceparent.isValidSpanId = function (id) {\r\n return id.match(/^[0-9a-f]{16}$/) && id !== \"0000000000000000\";\r\n };\r\n Traceparent.prototype.toString = function () {\r\n var self = this;\r\n return self.version + \"-\" + self.traceId + \"-\" + self.spanId + \"-\" + self.traceFlag;\r\n };\r\n Traceparent.DEFAULT_TRACE_FLAG = \"01\";\r\n Traceparent.DEFAULT_VERSION = \"00\";\r\n return Traceparent;\r\n}());\r\nexport { Traceparent };\r\n//# sourceMappingURL=TraceParent.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport * as tslib_1 from \"tslib\";\r\nimport { RequestHeaders, Util, CorrelationIdHelper, TelemetryItemCreator, RemoteDependencyData, DateTimeUtils, DisabledPropertyName, PropertiesPluginIdentifier, DistributedTracingModes } from '@microsoft/applicationinsights-common';\r\nimport { CoreUtils, LoggingSeverity, _InternalMessageId, BaseTelemetryPlugin, getLocation, getGlobal, strUndefined, strPrototype, InstrumentFunc, InstrumentProto, getPerformance } from '@microsoft/applicationinsights-core-js';\r\nimport { ajaxRecord } from './ajaxRecord';\r\nimport { EventHelper } from './ajaxUtils';\r\nimport { Traceparent } from './TraceParent';\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strThrowInternal = \"throwInternal\";\r\nvar strFetch = \"fetch\";\r\nvar _isNullOrUndefined = CoreUtils.isNullOrUndefined;\r\nvar _arrForEach = CoreUtils.arrForEach;\r\nvar _objKeys = CoreUtils.objKeys;\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n _isNullOrUndefined(_global.Request) ||\r\n _isNullOrUndefined(_global.Request[strPrototype]) ||\r\n _isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (typeof XMLHttpRequest !== strUndefined && !_isNullOrUndefined(XMLHttpRequest)) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !_isNullOrUndefined(proto) &&\r\n !_isNullOrUndefined(proto.open) &&\r\n !_isNullOrUndefined(proto.send) &&\r\n !_isNullOrUndefined(proto.abort);\r\n }\r\n // disable in IE8 or older (https://www.w3schools.com/jsref/jsref_trim_string.asp)\r\n try {\r\n \" a \".trim();\r\n }\r\n catch (ex) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: Util.dump(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (!_isNullOrUndefined(xhr) &&\r\n !_isNullOrUndefined(xhr[strAjaxData]) &&\r\n !_isNullOrUndefined(xhr[strAjaxData].requestUrl)) {\r\n result += \"(url: '\" + xhr[strAjaxData].requestUrl + \"')\";\r\n }\r\n }\r\n catch (e) { }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.CRITICAL, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n ajaxMonitorInstance[strDiagLog]()[strThrowInternal](LoggingSeverity.WARNING, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args.inst),\r\n exception: Util.dump(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n tslib_1.__extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var strTrackDependencyDataInternal = \"trackDependencyDataInternal\"; // Using string to help with minification\r\n var location = getLocation();\r\n var _fetchInitialized = false; // fetch monitoring initialized\r\n var _xhrInitialized = false; // XHR monitoring initialized\r\n var _currentWindowHost = location && location.host && location.host.toLowerCase();\r\n var _config = AjaxMonitor.getEmptyConfig();\r\n var _enableRequestHeaderTracking = false;\r\n var _trackAjaxAttempts = 0;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking = false;\r\n var _maxAjaxCallsPerView = 0;\r\n var _enableResponseHeaderTracking = false;\r\n var _hooks = [];\r\n var _disabledUrls = {};\r\n dynamicProto(AjaxMonitor, _this, function (_self, base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n base.initialize(config, core, extensions, pluginChain);\r\n var ctx_1 = _self._getTelCtx();\r\n var defaultConfig_1 = AjaxMonitor.getDefaultConfig();\r\n _arrForEach(_objKeys(defaultConfig_1), function (field) {\r\n _config[field] = ctx_1.getConfig(AjaxMonitor.identifier, field, defaultConfig_1[field]);\r\n });\r\n var distributedTracingMode = _config.distributedTracingMode;\r\n _enableRequestHeaderTracking = _config.enableRequestHeaderTracking;\r\n _enableAjaxPerfTracking = _config.enableAjaxPerfTracking;\r\n _maxAjaxCallsPerView = _config.maxAjaxCallsPerView;\r\n _enableResponseHeaderTracking = _config.enableResponseHeaderTracking;\r\n _isUsingAIHeaders = distributedTracingMode === DistributedTracingModes.AI || distributedTracingMode === DistributedTracingModes.AI_AND_W3C;\r\n _isUsingW3CHeaders = distributedTracingMode === DistributedTracingModes.AI_AND_W3C || distributedTracingMode === DistributedTracingModes.W3C;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey.length > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey.length - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n if (_config.disableAjaxTracking === false) {\r\n _instrumentXhr();\r\n }\r\n _instrumentFetch();\r\n if (extensions.length > 0 && extensions) {\r\n var propExt = void 0, extIx = 0;\r\n while (!propExt && extIx < extensions.length) {\r\n if (extensions[extIx] && extensions[extIx].identifier === PropertiesPluginIdentifier) {\r\n propExt = extensions[extIx];\r\n }\r\n extIx++;\r\n }\r\n if (propExt) {\r\n _context = propExt.context; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n }\r\n };\r\n _self.teardown = function () {\r\n // Remove all instrumentation hooks\r\n _arrForEach(_hooks, function (fn) {\r\n fn.rm();\r\n });\r\n _hooks = [];\r\n _fetchInitialized = false;\r\n _xhrInitialized = false;\r\n _self.setInitialized(false);\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _self[strTrackDependencyDataInternal](dependency, properties);\r\n };\r\n _self.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n if (input) {\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n init.headers = new Headers(init.headers || (input instanceof Request ? (input.headers || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n init.headers.set(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n init.headers.set(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n init.headers.set(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return init;\r\n }\r\n else if (xhr) {\r\n if (CorrelationIdHelper.canIncludeCorrelationHeader(_config, ajaxData.getAbsoluteUrl(), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData.traceID + \".\" + ajaxData.spanID;\r\n xhr.setRequestHeader(RequestHeaders.requestIdHeader, id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestIdHeader] = id;\r\n }\r\n }\r\n var appId = _config.appId || (_context && _context.appId());\r\n if (appId) {\r\n xhr.setRequestHeader(RequestHeaders.requestContextHeader, RequestHeaders.requestContextAppIdFormat + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.requestContextHeader] = RequestHeaders.requestContextAppIdFormat + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceparent = new Traceparent(ajaxData.traceID, ajaxData.spanID);\r\n xhr.setRequestHeader(RequestHeaders.traceParentHeader, traceparent.toString());\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData.requestHeaders[RequestHeaders.traceParentHeader] = traceparent.toString();\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[strTrackDependencyDataInternal] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal \r\n if ((_config.distributedTracingMode === DistributedTracingModes.W3C\r\n || _config.distributedTracingMode === DistributedTracingModes.AI_AND_W3C)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id.length - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n var item = TelemetryItemCreator.create(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self.core.track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, _InternalMessageId.MaxAjaxPerPVExceeded, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (_config.disableFetchTracking === false) {\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (_fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self.includeCorrelationHeaders(fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n var fetchData = callDetails.ctx().data;\r\n if (fetchData) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {}).status, response, fetchData, function () {\r\n var ajaxResponse = {\r\n statusText: response.statusText,\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n responseHeaderMap_1[name] = value;\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, fetchData, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor Window.fetch, monitoring data for this fetch call may be incorrect.\")\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _hooks.push(InstrumentFunc(global, strFetch, {\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _hooks.push(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n req: function (args, method, url, async) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true) &&\r\n (!ajaxData || !ajaxData.xhrMonitoringState.openDone)) {\r\n _openHandler(xhr, method, url, async);\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to monitor XMLHttpRequest.open, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n req: function (args, context) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.sendDone) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData.requestSentTime = DateTimeUtils.Now();\r\n xhr = _self.includeCorrelationHeaders(ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState.sendDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSend, \"Failed to monitor XMLHttpRequest, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n req: function (args) {\r\n var xhr = args.inst;\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState.abortDone) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState.abortDone = true;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxAbort, \"Failed to monitor XMLHttpRequest.abort, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n // Instrument setRequestHeader\r\n if (_enableRequestHeaderTracking) {\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n req: function (args, header, value) {\r\n var xhr = args.inst;\r\n if (_isMonitoredXhrInstance(xhr)) {\r\n xhr[strAjaxData].requestHeaders[header] = value;\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, _InternalMessageId.FailedMonitorAjaxSetRequestHeader, \"Failed to monitor XMLHttpRequest.setRequestHeader, monitoring data for this ajax call may be incorrect.\")\r\n });\r\n }\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!CoreUtils.isString(request) ? (request || {}).url || \"\" : request) || \"\").toLowerCase();\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!_isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!_isNullOrUndefined(request)) {\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === 'object' ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particalar instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!_isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !_isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || Util.generateW3CId();\r\n var spanID = Util.generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.method = method;\r\n ajaxData.requestUrl = url;\r\n ajaxData.xhrMonitoringState.openDone = true;\r\n ajaxData.requestHeaders = {};\r\n ajaxData.async = async;\r\n xhr[strAjaxData] = ajaxData;\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState.stateChangeAttached = EventHelper.Attach(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = Util.dump(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText.toLowerCase(), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxRSC, \"Failed to monitor XMLHttpRequest 'readystatechange' event handler, monitoring data for this ajax call may be incorrect.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n });\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr.responseText;\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happend because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData.responseFinishedTime = DateTimeUtils.Now();\r\n ajaxData.status = xhr.status;\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = Util.dump(e);\r\n }\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxDur, \"Failed to calculate the duration of the ajax call, monitoring data for this ajax call won't be sent.\", errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData.CreateTrackItem(\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr.statusText,\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr.response\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr.getAllResponseHeaders();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = headers.trim().split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n _arrForEach(arr, function (line) {\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n responseHeaderMap_2[header] = value;\r\n });\r\n ajaxResponse.headerMap = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n if (dependency) {\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr.getAllResponseHeaders();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString.toLowerCase(), RequestHeaders.requestContextHeaderLowerCase);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr),\r\n exception: Util.dump(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData.requestUrl && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && CoreUtils.isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries.length === 1) {\r\n ajaxData.perfMark = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData.perfMark;\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config.ajaxPerfLookupDelay;\r\n var requestUrl = ajaxData.requestUrl;\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries.length - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry.name, requestUrl) !== -1 || _indexOf(requestUrl, entry.name) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry.name === perfMark.name) {\r\n // We hit the start event\r\n ajaxData.perfTiming = perfTiming;\r\n break;\r\n }\r\n if (entry.startTime < perfMark.startTime - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData.perfTiming || // - we have not found the perf entry or \r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) {\r\n if (perfMark && CoreUtils.isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark.name);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr, \r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var traceID = (_context && _context.telemetryTrace && _context.telemetryTrace.traceID) || Util.generateW3CId();\r\n var spanID = Util.generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog]());\r\n ajaxData.requestSentTime = DateTimeUtils.Now();\r\n if (input instanceof Request) {\r\n ajaxData.requestUrl = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData.requestUrl = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init.method) {\r\n method = init.method;\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input.method;\r\n }\r\n ajaxData.method = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init.headers : 0) || (input instanceof Request ? (input.headers || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n requestHeaders[key] = value;\r\n });\r\n }\r\n ajaxData.requestHeaders = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!_isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\" + input + \"')\";\r\n }\r\n else {\r\n result += \"(url: '\" + input.url + \"')\";\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, _InternalMessageId.FailedMonitorAjaxOpen, \"Failed to grab failed fetch diagnostics message\", { exception: Util.dump(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = Util.dump(e);\r\n }\r\n _throwInternalWarning(_self, msgId, \"Failed to calculate the duration of the fetch call, monitoring data for this fetch call won't be sent.\", errorProps);\r\n }\r\n ajaxData.responseFinishedTime = DateTimeUtils.Now();\r\n ajaxData.status = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData.CreateTrackItem(\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n if (dependency) {\r\n _self[strTrackDependencyDataInternal](dependency);\r\n }\r\n else {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxDur, null, {\r\n requestSentTime: ajaxData.requestSentTime,\r\n responseFinishedTime: ajaxData.responseFinishedTime\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(_InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response.headers) {\r\n try {\r\n var responseHeader = response.headers.get(RequestHeaders.requestContextHeader);\r\n return CorrelationIdHelper.getCorrelationContext(responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, _InternalMessageId.FailedMonitorAjaxGetCorrelationHeader, \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\", {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: Util.dump(e)\r\n });\r\n }\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.getDefaultConfig = function () {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: true,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: DistributedTracingModes.AI,\r\n correlationHeaderExcludedDomains: [\r\n \"*.blob.core.windows.net\",\r\n \"*.blob.core.chinacloudapi.cn\",\r\n \"*.blob.core.cloudapi.de\",\r\n \"*.blob.core.usgovcloudapi.net\"\r\n ],\r\n correlationHeaderDomains: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25\r\n };\r\n return config;\r\n };\r\n AjaxMonitor.getEmptyConfig = function () {\r\n var emptyConfig = this.getDefaultConfig();\r\n _arrForEach(_objKeys(emptyConfig), function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n };\r\n AjaxMonitor.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.teardown = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n /**\r\n * Logs dependency call\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyData = function (dependency, properties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Protected function to allow sub classes the chance to add additional properties to the delendency event\r\n * before it's sent. This function calls track, so sub-classes must call this function after they have\r\n * populated their properties.\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyDataInternal = function (dependency, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { CoreUtils, AppInsightsCore, LoggingSeverity, _InternalMessageId, hasWindow, hasDocument } from \"@microsoft/applicationinsights-core-js\";\r\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from '@microsoft/applicationinsights-dependencies-js';\r\nimport * as Common from \"@microsoft/applicationinsights-common\";\r\n\"use strict\";\r\n;\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = Common;\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // initialize the queue and config in case they are undefined\r\n snippet.queue = snippet.queue || [];\r\n snippet.version = snippet.version || 2.0; // Default to new version\r\n var config = snippet.config || {};\r\n if (config.connectionString) {\r\n var cs = Common.ConnectionStringParser.parse(config.connectionString);\r\n var ingest = cs.ingestionendpoint;\r\n config.endpointUrl = ingest ? ingest + \"/v2/track\" : config.endpointUrl; // only add /v2/track when from connectionstring\r\n config.instrumentationKey = cs.instrumentationkey || config.instrumentationKey;\r\n }\r\n _this.appInsights = new ApplicationInsights();\r\n _this.properties = new PropertiesPlugin();\r\n _this.dependencies = new DependenciesPlugin();\r\n _this.core = new AppInsightsCore();\r\n _this.snippet = snippet;\r\n _this.config = config;\r\n _this.getSKUDefaults();\r\n }\r\n // Analytics Plugin\r\n /**\r\n * Log a user action or other occurrence.\r\n * @param {IEventTelemetry} event\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackEvent = function (event, customProperties) {\r\n this.appInsights.trackEvent(event, customProperties);\r\n };\r\n /**\r\n * Logs that a page, or similar container was displayed to the user.\r\n * @param {IPageViewTelemetry} pageView\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageView = function (pageView) {\r\n var inPv = pageView || {};\r\n this.appInsights.trackPageView(inPv);\r\n };\r\n /**\r\n * Log a bag of performance information via the customProperties field.\r\n * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n var inPvp = pageViewPerformance || {};\r\n this.appInsights.trackPageViewPerformance(inPvp);\r\n };\r\n /**\r\n * Log an exception that you have caught.\r\n * @param {IExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackException = function (exception) {\r\n if (!exception.exception && exception.error) {\r\n exception.exception = exception.error;\r\n }\r\n this.appInsights.trackException(exception);\r\n };\r\n /**\r\n * Manually send uncaught exception telemetry. This method is automatically triggered\r\n * on a window.onerror event.\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype._onerror = function (exception) {\r\n this.appInsights._onerror(exception);\r\n };\r\n /**\r\n * Log a diagnostic scenario such entering or leaving a function.\r\n * @param {ITraceTelemetry} trace\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n this.appInsights.trackTrace(trace, customProperties);\r\n };\r\n /**\r\n * Log a numeric value that is not associated with a specific event. Typically used\r\n * to send regular reports of performance indicators.\r\n *\r\n * To send a single measurement, just use the `name` and `average` fields\r\n * of {@link IMetricTelemetry}.\r\n *\r\n * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n * aggregating multiple measurements and sending the resulting average and modifying\r\n * the `sampleCount` field of {@link IMetricTelemetry}.\r\n * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n this.appInsights.trackMetric(metric, customProperties);\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n Initialization.prototype.startTrackPage = function (name) {\r\n this.appInsights.startTrackPage(name);\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n this.appInsights.stopTrackPage(name, url, customProperties, measurements);\r\n };\r\n Initialization.prototype.startTrackEvent = function (name) {\r\n this.appInsights.startTrackEvent(name);\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n this.appInsights.stopTrackEvent(name, properties, measurements); // Todo: Fix to pass measurements once type is updated\r\n };\r\n Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n return this.appInsights.addTelemetryInitializer(telemetryInitializer);\r\n };\r\n // Properties Plugin\r\n /**\r\n * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n *\r\n * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n * @param {string} authenticatedUserId\r\n * @param {string} [accountId]\r\n * @param {boolean} [storeInCookie=false]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n this.properties.context.user.setAuthenticatedUserContext(authenticatedUserId, accountId, storeInCookie);\r\n };\r\n /**\r\n * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n this.properties.context.user.clearAuthenticatedUserContext();\r\n };\r\n // Dependencies Plugin\r\n /**\r\n * Log a dependency call (e.g. ajax)\r\n * @param {IDependencyTelemetry} dependency\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackDependencyData = function (dependency) {\r\n this.dependencies.trackDependencyData(dependency);\r\n };\r\n // Misc\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.flush = function (async) {\r\n if (async === void 0) { async = true; }\r\n CoreUtils.arrForEach(this.core.getTransmissionControls(), function (channels) {\r\n CoreUtils.arrForEach(channels, function (channel) {\r\n channel.flush(async);\r\n });\r\n });\r\n };\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n * Fall back to xhr sender if beacon is not supported.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n CoreUtils.arrForEach(this.core.getTransmissionControls(), function (channels) {\r\n CoreUtils.arrForEach(channels, function (channel) {\r\n if (channel.onunloadFlush) {\r\n channel.onunloadFlush();\r\n }\r\n else {\r\n channel.flush(async);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initialize this instance of ApplicationInsights\r\n * @returns {IApplicationInsights}\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.loadAppInsights = function (legacyMode) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n var _this = this;\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n // apply updated properties to the global instance (snippet)\r\n for (var field in _this) {\r\n if (CoreUtils.isString(field) &&\r\n !CoreUtils.isFunction(_this[field]) &&\r\n field.substring(0, 1) !== \"_\") {\r\n snippet[field] = _this[field];\r\n }\r\n }\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _this.config.extensions && _this.config.extensions.length > 0) {\r\n throw new Error(\"Extensions not allowed in legacy mode\");\r\n }\r\n var extensions = [];\r\n var appInsightsChannel = new Sender();\r\n extensions.push(appInsightsChannel);\r\n extensions.push(_this.properties);\r\n extensions.push(_this.dependencies);\r\n extensions.push(_this.appInsights);\r\n // initialize core\r\n _this.core.initialize(_this.config, extensions);\r\n _this.context = _this.properties.context;\r\n _updateSnippetProperties(_this.snippet);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _this.emptyQueue();\r\n _this.pollInternalLogs();\r\n _this.addHousekeepingBeforeUnload(this);\r\n return _this;\r\n };\r\n /**\r\n * Overwrite the lazy loaded fields of global window snippet to contain the\r\n * actual initialized API methods\r\n * @param {Snippet} snippet\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n for (var field in this) {\r\n if (CoreUtils.isString(field)) {\r\n snippet[field] = this[field];\r\n }\r\n }\r\n };\r\n /**\r\n * Call any functions that were queued before the main script was loaded\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.emptyQueue = function () {\r\n var _this = this;\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (Common.Util.isArray(_this.snippet.queue)) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _this.snippet.queue.length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _this.snippet.queue[i];\r\n call();\r\n }\r\n _this.snippet.queue = undefined;\r\n delete _this.snippet.queue;\r\n }\r\n }\r\n catch (exception) {\r\n var properties = {};\r\n if (exception && CoreUtils.isFunction(exception.toString)) {\r\n properties.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // LoggingSeverity.WARNING,\r\n // _InternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n Initialization.prototype.pollInternalLogs = function () {\r\n this.core.pollInternalLogs();\r\n };\r\n Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance.onunloadFlush(false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n var ext = appInsightsInstance.appInsights.core['_extensions'][Common.PropertiesPluginIdentifier];\r\n if (ext && ext.context && ext.context._sessionManager) {\r\n ext.context._sessionManager.backup();\r\n }\r\n };\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnBeforeUnload) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigations.\r\n var added = CoreUtils.addEventHandler('beforeunload', performHousekeeping);\r\n added = CoreUtils.addEventHandler('pagehide', performHousekeeping) || added;\r\n if (!added) {\r\n appInsightsInstance.appInsights.core.logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToAddHandlerForOnBeforeUnload, 'Could not add handler for beforeunload and pagehide');\r\n }\r\n }\r\n // We also need to hook the pagehide event as not all versions of Safari support load/unload events.\r\n if (!appInsightsInstance.appInsights.config.disableFlushOnUnload) {\r\n // Not adding any telemetry as pagehide as it's not supported on all browsers\r\n CoreUtils.addEventHandler('pagehide', performHousekeeping);\r\n }\r\n }\r\n };\r\n Initialization.prototype.getSKUDefaults = function () {\r\n var _this = this;\r\n _this.config.diagnosticLogInterval =\r\n _this.config.diagnosticLogInterval && _this.config.diagnosticLogInterval > 0 ? _this.config.diagnosticLogInterval : 10000;\r\n };\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n//# sourceMappingURL=Initialization.js.map","import { extend, isNullOrUndefined, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport * as CONSTANT from '../base/constant';\nimport { updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { KEY_DOWN, KEY_UP } from './../../common/constant';\n/**\n * Formatter\n *\n * @hidden\n\n */\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n }\n /**\n * To execute the command\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {ActionBeginEventArgs} args - specifies the event arguments.\n * @param {MouseEvent|KeyboardEvent} event - specifies the keyboard event.\n * @param {IItemCollectionArgs} value - specifies the collection arguments\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.process = function (self, args, event, value) {\n var _this = this;\n var selection = self.contentModule.getDocument().getSelection();\n var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;\n var saveSelection;\n if (self.editorMode === 'HTML') {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n if (!isNullOrUndefined(args)\n && args.item.command\n && args.item.command !== 'Table'\n && args.item.command !== 'Actions'\n && args.item.command !== 'Links'\n && args.item.command !== 'Images'\n && args.item.command !== 'Files'\n && range\n && !(self.contentModule.getEditPanel().contains(this.getAncestorNode(range.commonAncestorContainer))\n || self.contentModule.getEditPanel() === range.commonAncestorContainer\n || self.contentModule.getPanel() === range.commonAncestorContainer)) {\n return;\n }\n if (isNullOrUndefined(args)) {\n var action_1 = event.action;\n if (action_1 !== 'tab' && action_1 !== 'enter' && action_1 !== 'space' && action_1 !== 'escape') {\n args = {};\n if (self.editorMode === 'Markdown' && action_1 === 'insert-table') {\n value = {\n 'headingText': self.localeObj.getConstant('TableHeadingText'),\n 'colText': self.localeObj.getConstant('TableColText')\n };\n }\n var items = {\n originalEvent: event, cancel: false,\n requestType: action_1 || (event.key + 'Key'),\n itemCollection: value\n };\n extend(args, args, items, true);\n if (isBlazor()) {\n delete args.item;\n delete args.itemCollection;\n }\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n if (action_1 === 'paste' || action_1 === 'cut' || action_1 === 'copy') {\n event.preventDefault();\n }\n }\n });\n }\n var isTableModule = isNullOrUndefined(self.tableModule) ? true : self.tableModule ?\n self.tableModule.ensureInsideTableList : false;\n if ((event.which === 9 && isTableModule) || event.which !== 9) {\n this.editorManager.observer.notify((event.type === 'keydown' ? KEY_DOWN : KEY_UP), {\n event: event,\n callBack: this.onSuccess.bind(this, self),\n value: value\n });\n }\n }\n else if (!isNullOrUndefined(args) && args.item.command && args.item.subCommand && ((args.item.command !== args.item.subCommand\n && args.item.command !== 'Font')\n || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')\n || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')\n && args.name === 'colorPickerChanged'))) {\n extend(args, args, { requestType: args.item.subCommand, cancel: false, itemCollection: value }, true);\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links'\n && actionBeginArgs.item.command !== 'Images') {\n _this.saveData();\n }\n self.isBlur = false;\n self.contentModule.getEditPanel().focus();\n if (self.editorMode === 'HTML') {\n saveSelection.restore();\n }\n var command = actionBeginArgs.item.subCommand.toLocaleLowerCase();\n if (command === 'paste' || command === 'cut' || command === 'copy') {\n self.clipboardAction(command, event);\n }\n else {\n _this.editorManager.observer.notify(CONSTANT.checkUndo, { subCommand: actionBeginArgs.item.subCommand });\n _this.editorManager.execCommand(actionBeginArgs.item.command, actionBeginArgs.item.subCommand, event, _this.onSuccess.bind(_this, self), actionBeginArgs.item.value, actionBeginArgs.item.subCommand === 'Pre' && args.name === 'dropDownSelect' ?\n { name: args.name } : value, ('#' + self.getID() + ' iframe'));\n }\n }\n });\n }\n if (isNullOrUndefined(event) || event && event.action !== 'copy') {\n this.enableUndo(self);\n }\n };\n Formatter.prototype.getAncestorNode = function (node) {\n node = node.nodeType === 3 ? node.parentNode : node;\n return node;\n };\n /**\n * onKeyHandler method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onKeyHandler = function (self, e) {\n var _this = this;\n this.editorManager.observer.notify(KEY_UP, {\n event: e, callBack: function () {\n self.notify(CONSTANT.contentChanged, {});\n _this.enableUndo(self);\n }\n });\n };\n /**\n * onSuccess method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {IMarkdownFormatterCallBack} events - specifies the event call back\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onSuccess = function (self, events) {\n self.notify(CONSTANT.contentChanged, {});\n if (events && (isNullOrUndefined(events.event) || events.event.action !== 'copy')) {\n this.enableUndo(self);\n self.notify(CONSTANT.execCommandCallBack, events);\n }\n self.trigger(CONSTANT.actionComplete, events, function (callbackArgs) {\n self.setPlaceHolder();\n if (callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' && self.editorMode === 'HTML') {\n var args = callbackArgs;\n if (callbackArgs.requestType === 'Links' && callbackArgs.event &&\n callbackArgs.event.type === 'keydown' &&\n callbackArgs.event.keyCode === 32) {\n return;\n }\n self.notify(CONSTANT.insertCompleted, {\n args: args.event, type: callbackArgs.requestType, isNotify: true,\n elements: args.elements\n });\n }\n self.autoResize();\n });\n };\n /**\n * Save the data for undo and redo action.\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.saveData = function (e) {\n this.editorManager.undoRedoManager.saveData(e);\n };\n /**\n * getUndoStatus method\n *\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.getUndoStatus = function () {\n return this.editorManager.undoRedoManager.getUndoStatus();\n };\n /* eslint-disable */\n /**\n * getUndoRedoStack method\n *\n * @param {IHtmlUndoRedoData} - specifies the redo data.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Formatter.prototype.getUndoRedoStack = function () {\n return this.editorManager.undoRedoManager.undoRedoStack;\n };\n /**\n * enableUndo method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.enableUndo = function (self) {\n var status = this.getUndoStatus();\n if (self.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n updateUndoRedoStatus(self.quickToolbarModule.inlineQTBar.quickTBarObj, status);\n }\n else {\n if (self.toolbarModule) {\n updateUndoRedoStatus(self.toolbarModule.baseToolbar, status);\n }\n }\n };\n return Formatter;\n}());\nexport { Formatter };\n","/**\n * Constant values for EditorManager\n */\n/**\n * Image plugin events\n *\n * @hidden\n */\nexport var IMAGE = 'INSERT-IMAGE';\nexport var TABLE = 'INSERT-TABLE';\nexport var LINK = 'INSERT-LINK';\nexport var INSERT_ROW = 'INSERT-ROW';\nexport var INSERT_COLUMN = 'INSERT-COLUMN';\nexport var DELETEROW = 'DELETE-ROW';\nexport var DELETECOLUMN = 'DELETE-COLUMN';\nexport var REMOVETABLE = 'REMOVE-TABLE';\nexport var TABLEHEADER = 'TABLE-HEADER';\nexport var TABLE_VERTICAL_ALIGN = 'TABLE_VERTICAL_ALIGN';\nexport var TABLE_MERGE = 'TABLE_MERGE';\nexport var TABLE_VERTICAL_SPLIT = 'TABLE_VERTICAL_SPLIT';\nexport var TABLE_HORIZONTAL_SPLIT = 'TABLE_HORIZONTAL_SPLIT';\nexport var TABLE_MOVE = 'TABLE_MOVE';\n/**\n * Alignments plugin events\n *\n * @hidden\n */\nexport var ALIGNMENT_TYPE = 'alignment-type';\n/**\n * Indents plugin events\n *\n * @hidden\n */\nexport var INDENT_TYPE = 'indent-type';\n/**\n * Constant tag names\n *\n * @hidden\n */\nexport var DEFAULT_TAG = 'p';\n/**\n * @hidden\n */\nexport var BLOCK_TAGS = ['address', 'article', 'aside', 'audio', 'blockquote',\n 'canvas', 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main', 'nav',\n 'noscript', 'ol', 'output', 'p', 'pre', 'section', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr', 'ul', 'video', 'body'];\n/**\n * @hidden\n */\nexport var IGNORE_BLOCK_TAGS = ['td', 'th'];\n/**\n * @hidden\n */\nexport var TABLE_BLOCK_TAGS = ['table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\n/**\n * Selection plugin events\n *\n * @hidden\n */\nexport var SELECTION_TYPE = 'selection-type';\n/**\n * Insert HTML plugin events\n *\n * @hidden\n */\nexport var INSERTHTML_TYPE = 'inserthtml-type';\n/**\n * Insert Text plugin events\n *\n * @hidden\n */\nexport var INSERT_TEXT_TYPE = 'insert-text-type';\n/**\n * Clear Format HTML plugin events\n *\n * @hidden\n */\nexport var CLEAR_TYPE = 'clear-type';\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar NodeSelection = /** @class */ (function () {\n function NodeSelection() {\n this.startNodeName = [];\n this.endNodeName = [];\n }\n NodeSelection.prototype.saveInstance = function (range, body) {\n this.range = range.cloneRange();\n this.rootNode = this.documentFromRange(range);\n this.body = body;\n this.startContainer = this.getNodeArray(range.startContainer, true);\n this.endContainer = this.getNodeArray(range.endContainer, false);\n this.startOffset = range.startOffset;\n this.endOffset = range.endOffset;\n this.html = this.body.innerHTML;\n return this;\n };\n NodeSelection.prototype.documentFromRange = function (range) {\n return (9 === range.startContainer.nodeType) ? range.startContainer : range.startContainer.ownerDocument;\n };\n NodeSelection.prototype.getRange = function (docElement) {\n var select = this.get(docElement);\n var range = select && select.rangeCount > 0 ? select.getRangeAt(select.rangeCount - 1) : docElement.createRange();\n return (range.startContainer !== docElement || range.endContainer !== docElement\n || range.startOffset || range.endOffset || (range.setStart(docElement.body, 0),\n range.collapse(!0)),\n range);\n };\n /**\n * get method\n *\n * @param {Document} docElement - specifies the get function\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.get = function (docElement) {\n return docElement.defaultView.getSelection();\n };\n /**\n * save method\n *\n * @param {Range} range - range value.\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.save = function (range, docElement) {\n range = (range) ? range.cloneRange() : this.getRange(docElement);\n return this.saveInstance(range, docElement.body);\n };\n /**\n * getIndex method\n *\n * @param {Node} node - specifies the node value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getIndex = function (node) {\n var index;\n var num = 0;\n node = !node.previousSibling && node.tagName === 'BR' ? node : node.previousSibling;\n if (node) {\n for (var type = node.nodeType; node; null) {\n index = node.nodeType;\n num++;\n //eslint-disable-next-line\n type = index;\n node = node.previousSibling;\n }\n }\n return num;\n };\n NodeSelection.prototype.isChildNode = function (nodeCollection, parentNode) {\n for (var index = 0; index < parentNode.childNodes.length; index++) {\n if (nodeCollection.indexOf(parentNode.childNodes[index]) > -1) {\n return true;\n }\n }\n return false;\n };\n NodeSelection.prototype.getNode = function (startNode, endNode, nodeCollection) {\n if (endNode === startNode &&\n (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1\n || this.isChildNode(nodeCollection, startNode))) {\n return null;\n }\n if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {\n return startNode.firstChild;\n }\n if (startNode.nextSibling) {\n return startNode.nextSibling;\n }\n if (!startNode.parentNode) {\n return null;\n }\n else {\n return startNode.parentNode;\n }\n };\n /**\n * getNodeCollection method\n *\n * @param {Range} range -specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeCollection = function (range) {\n var startNode = range.startContainer.childNodes[range.startOffset]\n || range.startContainer;\n var endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer;\n if (startNode === endNode && startNode.childNodes.length === 0) {\n return [startNode];\n }\n if (range.startOffset === range.endOffset && range.startOffset !== 0 && range.startContainer.nodeName === 'PRE') {\n return [startNode.nodeName === 'BR' || startNode.nodeName === '#text' ? startNode : startNode.childNodes[0]];\n }\n var nodeCollection = [];\n do {\n if (nodeCollection.indexOf(startNode) === -1) {\n nodeCollection.push(startNode);\n }\n startNode = this.getNode(startNode, endNode, nodeCollection);\n } while (startNode);\n return nodeCollection;\n };\n /**\n * getParentNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodeCollection = function (range) {\n return this.getParentNodes(this.getNodeCollection(range), range);\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @param {Range} range - specifies the range values.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodes = function (nodeCollection, range) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection.indexOf(nodeCollection[index].parentNode) !== -1)\n || (nodeCollection[index].nodeType === 3 &&\n range.startContainer !== range.endContainer &&\n range.startContainer.parentNode !== range.endContainer.parentNode)) {\n nodeCollection.splice(index, 1);\n index--;\n }\n else if (nodeCollection[index].nodeType === 3) {\n nodeCollection[index] = nodeCollection[index].parentNode;\n }\n }\n return nodeCollection;\n };\n /**\n * getSelectionNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollection = function (range) {\n return this.getSelectionNodes(this.getNodeCollection(range));\n };\n /**\n * getSelectionNodeCollection along with BR node method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollectionBr = function (range) {\n return this.getSelectionNodesBr(this.getNodeCollection(range));\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx)))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * Get selection text nodes with br method.\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeName !== 'BR' &&\n (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx))))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getInsertNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodeCollection = function (range) {\n return this.getInsertNodes(this.getNodeCollection(range));\n };\n /**\n * getInsertNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection[index].childNodes.length !== 0 &&\n nodeCollection[index].nodeType !== 3) ||\n (nodeCollection[index].nodeType === 3 &&\n nodeCollection[index].textContent === '')) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getNodeArray method\n *\n * @param {Node} node - specifies the node content.\n * @param {boolean} isStart - specifies the boolean value.\n * @param {Document} root - specifies the root document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeArray = function (node, isStart, root) {\n var array = [];\n // eslint-disable-next-line\n ((isStart) ? (this.startNodeName = []) : (this.endNodeName = []));\n for (; node !== (root ? root : this.rootNode); null) {\n if (isNullOrUndefined(node)) {\n break;\n }\n // eslint-disable-next-line\n (isStart) ? this.startNodeName.push(node.nodeName.toLowerCase()) : this.endNodeName.push(node.nodeName.toLowerCase());\n array.push(this.getIndex(node));\n node = node.parentNode;\n }\n return array;\n };\n NodeSelection.prototype.setRangePoint = function (range, isvalid, num, size) {\n var node = this.rootNode;\n var index = num.length;\n var constant = size;\n for (; index--; null) {\n node = node && node.childNodes[num[index]];\n }\n if (node && constant >= 0 && node.nodeName !== 'html') {\n range[isvalid ? 'setStart' : 'setEnd'](node, constant);\n }\n return range;\n };\n /**\n * restore method\n *\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.restore = function () {\n var range = this.range.cloneRange();\n range = this.setRangePoint(range, true, this.startContainer, this.startOffset);\n range = this.setRangePoint(range, false, this.endContainer, this.endOffset);\n this.selectRange(this.rootNode, range);\n return range;\n };\n NodeSelection.prototype.selectRange = function (docElement, range) {\n this.setRange(docElement, range);\n this.save(range, docElement);\n };\n /**\n * setRange method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setRange = function (docElement, range) {\n var selection = this.get(docElement);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n /**\n * setSelectionText method\n *\n * @param {Document} docElement - specifies the documrent\n * @param {Node} startNode - specifies the starting node.\n * @param {Node} endNode - specifies the the end node.\n * @param {number} startIndex - specifies the starting index.\n * @param {number} endIndex - specifies the end index.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionText = function (docElement, startNode, endNode, startIndex, endIndex) {\n var range = docElement.createRange();\n range.setStart(startNode, startIndex);\n range.setEnd(endNode, endIndex);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionContents method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionContents = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNode(element);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionNode = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNodeContents(element);\n this.setRange(docElement, range);\n };\n /**\n * getSelectedNodes method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectedNodes = function (docElement) {\n return this.getNodeCollection(this.getRange(docElement));\n };\n /**\n * Clear method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.Clear = function (docElement) {\n this.get(docElement).removeAllRanges();\n };\n /**\n * insertParentNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} newNode - specicfies the new node.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.insertParentNode = function (docElement, newNode, range) {\n range.surroundContents(newNode);\n this.selectRange(docElement, range);\n };\n /**\n * setCursorPoint method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Element} element - specifies the element.\n * @param {number} point - specifies the point.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setCursorPoint = function (docElement, element, point) {\n var range = docElement.createRange();\n var selection = docElement.defaultView.getSelection();\n range.setStart(element, point);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n return NodeSelection;\n}());\nexport { NodeSelection };\n","/**\n * Default Markdown formats config for adapter\n */\nexport var markdownFormatTags = {\n 'h6': '###### ',\n 'h5': '##### ',\n 'h4': '#### ',\n 'h3': '### ',\n 'h2': '## ',\n 'h1': '# ',\n 'blockquote': '> ',\n 'pre': '```\\n',\n 'p': ''\n};\n/**\n * Default selection formats config for adapter\n */\nexport var markdownSelectionTags = {\n 'Bold': '**',\n 'Italic': '*',\n 'StrikeThrough': '~~',\n 'InlineCode': '`',\n 'SubScript': '',\n 'SuperScript': '',\n 'UpperCase': 'A-Z',\n 'LowerCase': 'a-z'\n};\n/**\n * Default Markdown lists config for adapter\n */\nexport var markdownListsTags = {\n 'OL': '1. ',\n 'UL': '- '\n};\n/**\n * Default html key config for adapter\n */\nexport var htmlKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'underline': 'ctrl+u',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'indents': 'ctrl+]',\n 'outdents': 'ctrl+[',\n 'html-source': 'ctrl+shift+h',\n 'full-screen': 'ctrl+shift+f',\n 'decrease-fontsize': 'ctrl+shift+<',\n 'increase-fontsize': 'ctrl+shift+>',\n 'justify-center': 'ctrl+e',\n 'justify-full': 'ctrl+j',\n 'justify-left': 'ctrl+l',\n 'justify-right': 'ctrl+r',\n 'clear-format': 'ctrl+shift+r',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o',\n 'space': '32',\n 'enter': '13',\n 'tab': 'tab',\n 'delete': '46'\n};\n/**\n * Default markdown key config for adapter\n */\nexport var markdownKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'full-screen': 'ctrl+shift+f',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o'\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var pasteCleanupGroupingTags = {\n 'b': ['strong'],\n 'strong': ['b'],\n 'i': ['emp', 'cite'],\n 'emp': ['i', 'cite'],\n 'cite': ['i', 'emp']\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var listConversionFilters = {\n 'first': 'MsoListParagraphCxSpFirst',\n 'middle': 'MsoListParagraphCxSpMiddle',\n 'last': 'MsoListParagraphCxSpLast'\n};\n/**\n * Dom-Node Grouping of self closing tags\n *\n * @hidden\n */\nexport var selfClosingTags = [\n 'BR',\n 'IMG'\n];\n","import * as CONSTANT from './../base/constant';\nimport { append, detach, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { selfClosingTags } from '../../common/config';\nimport { getLastTextNode } from '../../common/util';\nexport var markerClassName = {\n startSelection: 'e-editor-select-start',\n endSelection: 'e-editor-select-end'\n};\n/**\n * DOMNode internal plugin\n *\n * @hidden\n\n */\nvar DOMNode = /** @class */ (function () {\n /**\n * Constructor for creating the DOMNode plugin\n *\n * @param {Element} parent - specifies the parent element\n * @param {Document} currentDocument - specifies the current document.\n * @hidden\n\n */\n function DOMNode(parent, currentDocument) {\n this.parent = parent;\n this.nodeSelection = new NodeSelection();\n this.currentDocument = currentDocument;\n }\n /**\n * contents method\n *\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.contents = function (element) {\n return (element && 'IFRAME' !== element.tagName ? Array.prototype.slice.call(element.childNodes || []) : []);\n };\n /**\n * isBlockNode method\n *\n * @param {Element} element - specifies the node element.\n * @returns {boolean} - sepcifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n /**\n * isLink method\n *\n * @param {Element} element - specifies the element\n * @returns {boolean} - specifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isLink = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && 'a' === element.tagName.toLowerCase()));\n };\n /**\n * blockParentNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element value\n * @hidden\n\n */\n DOMNode.prototype.blockParentNode = function (element) {\n for (; element && element.parentNode !== this.parent && ((!element.parentNode ||\n !this.hasClass(element.parentNode, 'e-node-inner'))); null) {\n element = element.parentNode;\n if (this.isBlockNode(element)) {\n return element;\n }\n }\n return element;\n };\n /**\n * rawAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.rawAttributes = function (element) {\n var rawAttr = {};\n var attributes = element.attributes;\n if (attributes.length > 0) {\n for (var d = 0; d < attributes.length; d++) {\n var e = attributes[d];\n rawAttr[e.nodeName] = e.value;\n }\n }\n return rawAttr;\n };\n /**\n * attributes method\n *\n * @param {Element} element - sepcifies the element.\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.attributes = function (element) {\n if (!element) {\n return '';\n }\n var attr = '';\n var rawAttr = this.rawAttributes(element);\n var orderRawAttr = Object.keys(rawAttr).sort();\n for (var e = 0; e < orderRawAttr.length; e++) {\n var attrKey = orderRawAttr[e];\n var attrValue = rawAttr[attrKey];\n /* eslint-disable */\n if (attrValue.indexOf(\"'\") < 0 && attrValue.indexOf('\"') >= 0) {\n attr += ' ' + attrKey + \"='\" + attrValue + \"'\";\n }\n else if (attrValue.indexOf('\"') >= 0 && attrValue.indexOf(\"'\") >= 0) {\n /* eslint-enable */\n attrValue = attrValue.replace(/\"/g, '"');\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n else {\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n }\n return attr;\n };\n /**\n * clearAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.clearAttributes = function (element) {\n for (var attr = element.attributes, c = attr.length - 1; c >= 0; c--) {\n var key = attr[c];\n element.removeAttribute(key.nodeName);\n }\n };\n /**\n * openTagString method\n *\n * @param {Element} element - specifies the element.\n * @returns {string} - returns the string\n * @hidden\n\n */\n DOMNode.prototype.openTagString = function (element) {\n return '<' + element.tagName.toLowerCase() + this.attributes(element) + '>';\n };\n /**\n * closeTagString method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.closeTagString = function (element) {\n return '';\n };\n /**\n * createTagString method\n *\n * @param {string} tagName - specifies the tag name\n * @param {Element} relativeElement - specifies the relative element\n * @param {string} innerHTML - specifies the string value\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.createTagString = function (tagName, relativeElement, innerHTML) {\n return '<' + tagName.toLowerCase() + this.attributes(relativeElement) + '>' + innerHTML + '';\n };\n /**\n * isList method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isList = function (element) {\n return !!element && ['UL', 'OL'].indexOf(element.tagName) >= 0;\n };\n /**\n * isElement method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isElement = function (element) {\n return element === this.parent;\n };\n /**\n * isEditable method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditable = function (element) {\n return ((!element.getAttribute || element.getAttribute('contenteditable') === 'true')\n && ['STYLE', 'SCRIPT'].indexOf(element.tagName) < 0);\n };\n /**\n * hasClass method\n *\n * @param {Element} element - specifes the element.\n * @param {string} className - specifies the class name value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.hasClass = function (element, className) {\n return element && element.classList && element.classList.contains(className);\n };\n /**\n * replaceWith method\n *\n * @param {Element} element - specifes the element.\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.replaceWith = function (element, value) {\n var parentNode = element.parentNode;\n parentNode.insertBefore(this.parseHTMLFragment(value), element);\n detach(element);\n };\n /**\n * parseHTMLFragment method\n *\n * @param {string} value - specifies the string value\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.parseHTMLFragment = function (value) {\n /* eslint-disable */\n var temp = createElement('template');\n temp.innerHTML = value;\n if (temp.content instanceof DocumentFragment) {\n return temp.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n /* eslint-enable */\n };\n /**\n * wrap method\n *\n * @param {Element} element - specifies the element\n * @param {Element} wrapper - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrap = function (element, wrapper) {\n element.parentNode.insertBefore(wrapper, element);\n wrapper = element.previousSibling;\n wrapper.appendChild(element);\n return wrapper;\n };\n /**\n * insertAfter method\n *\n * @param {Element} newNode - specifies the new node element\n * @param {Element} referenceNode - specifies the referenece node\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n /**\n * wrapInner method\n *\n * @param {Element} parent - specifies the parent element.\n * @param {Element} wrapper - specifies the wrapper element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n wrapper = parent.querySelector('.e-rte-wrap-inner');\n wrapper.classList.remove('e-rte-wrap-inner');\n if (wrapper.classList.length === 0) {\n wrapper.removeAttribute('class');\n }\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n /**\n * unWrap method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element.\n * @hidden\n\n */\n DOMNode.prototype.unWrap = function (element) {\n var parent = element.parentNode;\n var unWrapNode = [];\n while (element.firstChild) {\n unWrapNode.push(element.firstChild);\n parent.insertBefore(element.firstChild, element);\n }\n unWrapNode = unWrapNode.length > 0 ? unWrapNode : [element.parentNode];\n parent.removeChild(element);\n return unWrapNode;\n };\n /**\n * getSelectedNode method\n *\n * @param {Element} element - specifies the element\n * @param {number} index - specifies the index value.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getSelectedNode = function (element, index) {\n if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 &&\n element.childNodes[index - 1] && element.childNodes[index - 1].nodeType === Node.ELEMENT_NODE &&\n (element.childNodes[index - 1].classList.contains(markerClassName.startSelection) ||\n element.childNodes[index - 1].classList.contains(markerClassName.endSelection))) {\n element = element.childNodes[index - 1];\n }\n else if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 && element.childNodes[index]) {\n element = element.childNodes[index];\n }\n if (element.nodeType === Node.TEXT_NODE) {\n element = element.parentNode;\n }\n return element;\n };\n /**\n * nodeFinds method\n *\n * @param {Element} element - specifies the element.\n * @param {Element[]} elements - specifies the array of elements\n * @returns {Element[]} - returnts the array elements\n * @hidden\n\n */\n DOMNode.prototype.nodeFinds = function (element, elements) {\n var existNodes = [];\n for (var i = 0; i < elements.length; i++) {\n if (element.contains(elements[i]) && element !== elements[i]) {\n existNodes.push(elements[i]);\n }\n }\n return existNodes;\n };\n /**\n * isEditorArea method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditorArea = function () {\n var range = this.getRangePoint(0);\n var element;\n for (element = range.commonAncestorContainer; element && !this.isElement(element); null) {\n element = element.parentNode;\n }\n return !!this.isElement(element);\n };\n /**\n * getRangePoint method\n *\n * @param {number} point - specifies the number value.\n * @returns {Range} - returns the range.\n * @hidden\n\n */\n DOMNode.prototype.getRangePoint = function (point) {\n var selection = this.getSelection();\n var ranges = [];\n if (selection && selection.getRangeAt && selection.rangeCount) {\n ranges = [];\n for (var f = 0; f < selection.rangeCount; f++) {\n ranges.push(selection.getRangeAt(f));\n }\n }\n else {\n ranges = [this.currentDocument.createRange()];\n }\n return 'undefined' !== typeof point ? ranges[point] : ranges;\n };\n DOMNode.prototype.getSelection = function () {\n return this.nodeSelection.get(this.currentDocument);\n };\n /**\n * getPreviousNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getPreviousNode = function (element) {\n element = element.previousElementSibling;\n for (; element && element.textContent === '\\n'; null) {\n element = element.previousElementSibling;\n }\n return element;\n };\n /**\n * encode method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - specifies the string value\n * @hidden\n\n */\n DOMNode.prototype.encode = function (value) {\n var divNode = document.createElement('div');\n divNode.innerText = value;\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * saveMarker method\n *\n * @param {NodeSelection} save - specifies the node selection,\n * @param {string} action - specifies the action value.\n * @returns {NodeSelection} - returns the value\n * @hidden\n\n */\n DOMNode.prototype.saveMarker = function (save, action) {\n var start = this.parent.querySelector('.' + markerClassName.startSelection);\n var end = this.parent.querySelector('.' + markerClassName.endSelection);\n var startTextNode;\n var endTextNode;\n if (start.textContent === '' && isNullOrUndefined(end) && action !== 'tab') {\n if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {\n start.innerHTML = '
    ';\n }\n else {\n start.innerHTML = '';\n }\n }\n if (this.hasClass(start, markerClassName.startSelection) && start.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, start, this.encode(start.textContent));\n this.replaceWith(start, replace);\n start = this.parent.querySelector('.' + markerClassName.startSelection);\n start.classList.remove(markerClassName.startSelection);\n startTextNode = start.childNodes[0];\n }\n else {\n startTextNode = this.unWrap(start)[0];\n }\n if (this.hasClass(end, markerClassName.endSelection) && end.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, end, this.encode(end.textContent));\n this.replaceWith(end, replace);\n end = this.parent.querySelector('.' + markerClassName.endSelection);\n end.classList.remove(markerClassName.endSelection);\n endTextNode = end.childNodes[0];\n }\n else {\n endTextNode = end ? this.unWrap(end)[0] : startTextNode;\n }\n save.startContainer = save.getNodeArray(startTextNode, true);\n save.endContainer = save.getNodeArray(endTextNode, false);\n return save;\n };\n DOMNode.prototype.marker = function (className, textContent) {\n return '' + textContent + '';\n };\n /**\n * setMarker method\n *\n * @param {NodeSelection} save - specifies the node selection.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.setMarker = function (save) {\n var range = save.range;\n var startChildNodes = range.startContainer.childNodes;\n var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';\n var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :\n startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);\n var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer);\n if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {\n var existNode = start.contains(end) ? start : end;\n var isElement = existNode.nodeType !== Node.TEXT_NODE;\n if (isElement) {\n var nodes = [];\n var textNodes = [];\n for (var node = existNode; existNode.contains(node); null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (textNodes.indexOf(node) < 0 && (node.nodeType === Node.TEXT_NODE ||\n (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0\n && (node.tagName === 'BR' || node.tagName === 'IMG')))) {\n textNodes.push(node);\n }\n }\n if (textNodes.length) {\n start = start.contains(end) ? textNodes[0] : start;\n end = textNodes[textNodes.length - 1];\n }\n }\n }\n if (start !== end) {\n if (start.nodeType !== Node.TEXT_NODE && ((start.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(start.parentNode.tagName.toLocaleLowerCase()) >= 0) ||\n start.tagName === 'IMG')) {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n }\n if (end.nodeType !== Node.TEXT_NODE && end.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(end.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n this.replaceWith(end, this.marker(markerClassName.endSelection, this.encode(end.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(end);\n }\n else {\n this.ensureSelfClosingTag(end, markerClassName.endSelection, range);\n }\n }\n else {\n this.ensureSelfClosingTag(start, markerClassName.startSelection, range);\n }\n };\n /**\n * ensureSelfClosingTag method\n *\n * @param {Element} start - specifies the element.\n * @param {string} className - specifes the class name string value\n * @param {Range} range - specifies the range value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.ensureSelfClosingTag = function (start, className, range) {\n var isTable = false;\n if (start.nodeType === 3) {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.tagName === 'BR') {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n if (start.tagName === 'IMG') {\n var parNode = document.createElement('p');\n start.parentElement.insertBefore(parNode, start);\n parNode.appendChild(start);\n start = parNode.children[0];\n }\n if (start.tagName === 'TABLE') {\n isTable = true;\n if (start.textContent === '') {\n var tdNode = start.querySelectorAll('td');\n start = tdNode[tdNode.length - 1];\n start = !isNullOrUndefined(start.childNodes[0]) ? start.childNodes[0] : start;\n }\n else {\n var lastNode = start.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n start = lastNode;\n }\n }\n for (var i = 0; i < selfClosingTags.length; i++) {\n start = (start.tagName === selfClosingTags[i] && !isTable) ? start.parentNode : start;\n }\n if (start.nodeType === 3 && start.nodeName === '#text') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.nodeName === 'BR') {\n this.replaceWith(start, this.marker(markerClassName.endSelection, this.encode(start.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(start);\n }\n else {\n var marker = this.marker(className, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n }\n };\n /**\n * createTempNode method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.createTempNode = function (element) {\n var textContent = element.textContent;\n if (element.tagName === 'BR') {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var node = element.parentNode;\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.tagName.toLocaleLowerCase()) >= 0) {\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n }\n }\n else if (((element.nodeType !== Node.TEXT_NODE &&\n (element.classList.contains(markerClassName.startSelection) ||\n element.classList.contains(markerClassName.endSelection))) ||\n textContent.replace(/\\n/g, '').replace(/(^ *)|( *$)/g, '').length > 0 ||\n textContent.length && textContent.indexOf('\\n') < 0)) {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var target = element;\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n var ignoreBr = target.nodeType === Node.ELEMENT_NODE && target.firstChild && target.firstChild.nodeName === 'BR'\n && (target.classList.contains(markerClassName.startSelection) ||\n target.classList.contains(markerClassName.endSelection));\n if (!ignoreBr && element.nextElementSibling && element.nextElementSibling.tagName === 'BR') {\n element.appendChild(element.nextElementSibling);\n }\n }\n return element;\n };\n /**\n * getImageTagInSelection method\n *\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.getImageTagInSelection = function () {\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n return selection.focusNode.querySelectorAll('img');\n }\n return null;\n };\n /**\n * blockNodes method\n *\n * @returns {Node[]} - returns the node array values\n * @hidden\n\n */\n DOMNode.prototype.blockNodes = function () {\n var collectionNodes = [];\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n var ranges = this.getRangePoint();\n for (var j = 0; j < ranges.length; j++) {\n var parentNode = void 0;\n var range = ranges[j];\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n if (this.isBlockNode(startNode) && collectionNodes.indexOf(startNode) < 0) {\n collectionNodes.push(startNode);\n }\n parentNode = this.blockParentNode(startNode);\n if (parentNode && collectionNodes.indexOf(parentNode) < 0) {\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(parentNode.tagName.toLocaleLowerCase()) >= 0 && (startNode.tagName === 'BR' ||\n startNode.nodeType === Node.TEXT_NODE ||\n startNode.classList.contains(markerClassName.startSelection) ||\n startNode.classList.contains(markerClassName.endSelection))) {\n var tempNode = startNode.previousSibling &&\n startNode.previousSibling.nodeType === Node.TEXT_NODE ?\n startNode.previousSibling : startNode;\n if (!startNode.nextSibling && !startNode.previousSibling && startNode.tagName === 'BR') {\n collectionNodes.push(tempNode);\n }\n else {\n collectionNodes.push(this.createTempNode(tempNode));\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n var nodes = [];\n for (var node = startNode; node !== endNode && node !== this.parent; null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node && node.nodeType !== 8 && (node.tagName === 'BR' || (node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim() !== '') || (node.nodeType !== Node.TEXT_NODE &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection)))) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node);\n }\n else if (node.nextSibling && node.nextSibling.nodeType !== 8 &&\n (node.nextSibling.tagName === 'BR' ||\n node.nextSibling.nodeType === Node.TEXT_NODE ||\n node.nextSibling.classList.contains(markerClassName.startSelection) ||\n node.nextSibling.classList.contains(markerClassName.endSelection)) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.nextSibling.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node.nextSibling);\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (collectionNodes.indexOf(node) < 0 && node.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0 &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(node));\n }\n if (this.isBlockNode(node) && this.ignoreTableTag(node) && nodes.indexOf(node) < 0 &&\n collectionNodes.indexOf(node) < 0 && (node !== endNode || range.endOffset > 0)) {\n collectionNodes.push(node);\n }\n if (node.nodeName === 'IMG' && node.parentElement.contentEditable === 'true') {\n collectionNodes.push(node);\n }\n }\n parentNode = this.blockParentNode(endNode);\n if (parentNode && this.ignoreTableTag(parentNode) && collectionNodes.indexOf(parentNode) < 0 &&\n (!isNullOrUndefined(parentNode.previousElementSibling) && parentNode.previousElementSibling.tagName !== 'IMG')) {\n collectionNodes.push(parentNode);\n }\n }\n }\n for (var i = collectionNodes.length - 1; i > 0; i--) {\n var nodes = this.nodeFinds(collectionNodes[i], collectionNodes);\n if (nodes.length) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (collectionNodes[i].tagName === 'LI' && listNodes.length > 0) {\n continue;\n }\n else {\n collectionNodes.splice(i, 1);\n }\n }\n }\n return collectionNodes;\n };\n DOMNode.prototype.ignoreTableTag = function (element) {\n return !(CONSTANT.TABLE_BLOCK_TAGS.indexOf(element.tagName.toLocaleLowerCase()) >= 0);\n };\n return DOMNode;\n}());\nexport { DOMNode };\n","import * as CONSTANT from './../base/constant';\nimport { createElement, detach, prepend, append, attributes } from '@syncfusion/ej2-base';\nimport { markerClassName } from './dom-node';\nimport * as EVENTS from './../../common/constant';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Lists internal component\n *\n * @hidden\n\n */\nvar Lists = /** @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Lists(parent) {\n this.parent = parent;\n this.domNode = this.parent.domNode;\n this.addEventListener();\n }\n Lists.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.LIST_TYPE, this.applyListsHandler, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(EVENTS.SPACE_ACTION, this.spaceKeyAction, this);\n };\n Lists.prototype.testList = function (elem) {\n var olListRegex = [/^[\\d]+[.]+$/,\n /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,\n /^[a-zA-Z][.]+$/];\n var elementStart = !isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;\n if (!isNullOrUndefined(elementStart)) {\n for (var i = 0; i < olListRegex.length; i++) {\n if (olListRegex[i].test(elementStart)) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.testCurrentList = function (range) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(range.startContainer.textContent.slice(0, range.startOffset).trim())) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.spaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n // eslint-disable-next-line\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var preElement = startNode.previousElementSibling;\n var nextElement = startNode.nextElementSibling;\n var preElemULStart = !isNullOrUndefined(preElement) ?\n preElement.innerText.trim().substring(0, 1) : null;\n var nextElemULStart = !isNullOrUndefined(nextElement) ?\n nextElement.innerText.trim().substring(0, 1) : null;\n var startElementOLTest = this.testCurrentList(range);\n var preElementOLTest = this.testList(preElement);\n var nextElementOLTest = this.testList(nextElement);\n if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {\n if (startElementOLTest) {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n }\n else if (range.startContainer.textContent.slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.slice(0, range.startOffset).trim() === '-') {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n }\n }\n };\n // eslint-disable-next-line\n Lists.prototype.enterList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :\n range.startContainer.parentElement.closest('LI');\n var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :\n range.endContainer.parentElement.closest('LI');\n if (!isNOU(startNode) && !isNOU(endNode) && startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.trim() === '') {\n if (startNode.textContent.charCodeAt(0) === 65279) {\n startNode.textContent = '';\n }\n var startNodeParent = startNode.parentElement;\n if (isNOU(startNodeParent.parentElement.closest('UL')) && isNOU(startNodeParent.parentElement.closest('OL'))) {\n if (!isNOU(startNode.nextElementSibling)) {\n //startNode.classList.add('innerNode');\n var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var paraTag = createElement('p');\n paraTag.innerHTML = '
    ';\n this.parent.domNode.insertAfter(paraTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, paraTag, 0);\n if (startNodeParent.textContent === '') {\n detach(startNodeParent);\n }\n else {\n detach(startNode);\n }\n }\n }\n };\n // eslint-disable-next-line\n Lists.prototype.backspaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n if (startNode === endNode && !isNullOrUndefined(closest(startNode, 'li')) &&\n ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||\n (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {\n startNode.textContent = '';\n }\n if (startNode === endNode && startNode.textContent === '') {\n if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {\n detach(startNode);\n }\n else if (startNode.closest('ul') || startNode.closest('ol')) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.firstElementChild === startNode && !isNOU(parentList.children[1]) &&\n (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {\n if (parentList.tagName === parentList.children[1].tagName) {\n while (parentList.children[1].lastChild) {\n this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);\n }\n detach(parentList.children[1]);\n }\n else {\n parentList.parentElement.insertBefore(parentList.children[1], parentList);\n }\n }\n }\n }\n else if (!isNOU(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&\n (!isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||\n startNode.childNodes[1].nodeName === 'OL'))) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.tagName === startNode.childNodes[1].nodeName) {\n while (startNode.childNodes[1].lastChild) {\n this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);\n }\n detach(startNode.childNodes[1]);\n }\n else {\n parentList.parentElement.insertBefore(startNode.children[1], parentList);\n }\n }\n };\n Lists.prototype.keyDownHandler = function (e) {\n if (e.event.which === 13) {\n this.enterList(e);\n }\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n if (e.event.which === 8) {\n this.backspaceList(e);\n }\n if (e.event.which === 46 && e.event.action === 'delete') {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var commonAncestor = range.commonAncestorContainer;\n var startEle = range.startContainer;\n var endEle = range.endContainer;\n var startNode = startEle.nodeType === 3 ? startEle.parentElement : startEle;\n var endNode = endEle.nodeType === 3 ? endEle.parentElement : endEle;\n if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode\n && (!isNullOrUndefined(closest(startNode, 'ul')) || !isNullOrUndefined(closest(startNode, 'ol')))\n && (!isNullOrUndefined(closest(endNode, 'ul')) || !isNullOrUndefined(closest(endNode, 'ol')))\n && (commonAncestor.lastElementChild === closest(endNode, 'li')) && !range.collapsed) {\n detach(commonAncestor);\n }\n }\n if (e.event.which === 9) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n }\n var blockNodes = void 0;\n var startOffset = range.startOffset;\n var endOffset = range.endOffset;\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {\n return;\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n this.domNode.setMarker(this.saveSelection);\n }\n blockNodes = this.domNode.blockNodes();\n }\n var nodes = [];\n var isNested = true;\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((startOffset === 0 && endOffset === 0) || e.ignoreDefault)) {\n e.event.preventDefault();\n e.event.stopPropagation();\n this.currentAction = this.getAction(nodes[0]);\n if (e.event.shiftKey) {\n this.revertList(nodes);\n this.revertClean();\n }\n else {\n isNested = this.nestedList(nodes);\n }\n if (isNested) {\n this.cleanNode();\n this.parent.editableElement.focus();\n }\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes(),\n event: e.event\n });\n }\n }\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n if (e.event && e.event.shiftKey && e.event.key === 'Tab') {\n e.event.action = 'tab';\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection, e.event.action);\n this.saveSelection.restore();\n }\n }\n }\n else {\n switch (e.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n }\n };\n Lists.prototype.spaceKeyAction = function (e) {\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n };\n Lists.prototype.getAction = function (element) {\n var parentNode = element.parentNode;\n return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');\n };\n Lists.prototype.revertClean = function () {\n var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');\n for (var i = 0; i < collectionNodes.length; i++) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (listNodes.length > 0) {\n for (var j = 0; j < listNodes.length; j++) {\n var prevSibling = listNodes[j].previousSibling;\n if (prevSibling && prevSibling.tagName === 'LI') {\n prevSibling.appendChild(listNodes[j]);\n }\n }\n }\n }\n };\n Lists.prototype.noPreviousElement = function (elements) {\n var firstNode;\n var firstNodeOL;\n var siblingListOL = elements.querySelectorAll('ol, ul');\n var siblingListLI = elements\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNode = siblingListLI[0];\n }\n else {\n firstNodeOL = siblingListOL[0];\n }\n if (firstNode) {\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNode);\n setStyleAttribute(elements, { 'list-style-type': 'none' });\n setStyleAttribute(firstNode, { 'list-style-type': '' });\n h = nextSibling;\n }\n }\n else if (firstNodeOL) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNodeOL);\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n prepend([firstNodeOL], elements.parentNode);\n detach(elements);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], firstNodeOL.parentNode);\n append([firstNodeOL], nestedElementLI);\n }\n else {\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], elements.parentNode);\n var nestedElement = createElement(elements.parentNode.tagName);\n prepend([nestedElement], nestedElementLI);\n append([elements], nestedElement);\n }\n };\n Lists.prototype.nestedList = function (elements) {\n var isNested = false;\n for (var i = 0; i < elements.length; i++) {\n var prevSibling = this.domNode.getPreviousNode(elements[i]);\n if (prevSibling) {\n isNested = true;\n var firstNode = void 0;\n var firstNodeLI = void 0;\n var siblingListOL = elements[i].querySelectorAll('ol, ul');\n var siblingListLI = elements[i]\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNodeLI = siblingListLI[0];\n }\n else {\n firstNode = siblingListOL[0];\n }\n if (firstNode) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNode);\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n append([firstNode], prevSibling);\n detach(elements[i]);\n }\n else if (firstNodeLI) {\n if (prevSibling.tagName === 'LI') {\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNodeLI);\n setStyleAttribute(elements[i], { 'list-style-type': 'none' });\n setStyleAttribute(firstNodeLI, { 'list-style-type': '' });\n h = nextSibling;\n }\n append([firstNodeLI.parentNode], prevSibling);\n detach(elements[i]);\n }\n }\n else {\n if (prevSibling.tagName === 'LI') {\n var nestedElement = createElement(elements[i].parentNode.tagName);\n append([nestedElement], prevSibling);\n append([elements[i]], nestedElement);\n }\n }\n }\n else {\n var element = elements[i];\n isNested = true;\n this.noPreviousElement(element);\n }\n }\n return isNested;\n };\n Lists.prototype.applyListsHandler = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.currentAction = e.subCommand;\n this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;\n this.domNode.setMarker(this.saveSelection);\n var listsNodes = this.domNode.blockNodes();\n for (var i = 0; i < listsNodes.length; i++) {\n if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {\n listsNodes.splice(i, 1);\n }\n if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'\n && 'LI' === listsNodes[i].parentNode.tagName) {\n listsNodes[i] = listsNodes[i].parentNode;\n }\n }\n this.applyLists(listsNodes, this.currentAction, e.selector, e.item);\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Lists.prototype.applyLists = function (elements, type, selector, item) {\n var isReverse = true;\n if (this.isRevert(elements, type) && isNOU(item)) {\n this.revertList(elements);\n this.removeEmptyListElements();\n }\n else {\n this.checkLists(elements, type, item);\n for (var i = 0; i < elements.length; i++) {\n if (!isNOU(item) && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(elements[i], { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(elements[i], { 'list-style-image': 'none' });\n setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if (elements[i].getAttribute('contenteditable') === 'true'\n && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {\n var listEle = document.createElement(type);\n listEle.innerHTML = '

  • ';\n elements[i].appendChild(listEle);\n }\n else if ('LI' !== elements[i].tagName && isNOU(item)) {\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ? elements[i].innerHTML :\n elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n else if (!isNOU(item) && 'LI' !== elements[i].tagName) {\n // eslint-disable-next-line\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + elemAtt + '>';\n var closeTag = '';\n var newTag = 'li';\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ? elements[i].innerHTML :\n elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n }\n }\n this.cleanNode();\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, selector);\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n };\n Lists.prototype.removeEmptyListElements = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n Lists.prototype.isRevert = function (nodes, tagName) {\n var isRevert = true;\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].tagName !== 'LI') {\n return false;\n }\n if (nodes[i].parentNode.tagName !== tagName) {\n isRevert = false;\n }\n }\n return isRevert;\n };\n Lists.prototype.checkLists = function (nodes, tagName, item) {\n var nodesTemp = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i].parentNode;\n if (!isNOU(item) && 'LI' === nodes[i].tagName && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(node, { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(node, { 'list-style-image': 'none' });\n setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||\n (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {\n nodesTemp.push(node);\n }\n }\n for (var j = nodesTemp.length - 1; j >= 0; j--) {\n var h = nodesTemp[j];\n var replace = '<' + tagName.toLowerCase() + ' '\n + this.domNode.attributes(h) + '>' + h.innerHTML + '';\n this.domNode.replaceWith(nodesTemp[j], replace);\n }\n };\n Lists.prototype.cleanNode = function () {\n var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');\n for (var c = 0; c < liParents.length; c++) {\n var node = liParents[c];\n if (this.domNode.isList(node.previousElementSibling) &&\n this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {\n var contentNodes = this.domNode.contents(node);\n for (var f = 0; f < contentNodes.length; f++) {\n node.previousElementSibling.appendChild(contentNodes[f]);\n }\n node.parentNode.removeChild(node);\n }\n }\n };\n Lists.prototype.findUnSelected = function (temp, elements) {\n temp = temp.slice().reverse();\n if (temp.length > 0) {\n var rightIndent = [];\n var indentElements = [];\n var lastElement = elements[elements.length - 1];\n var lastElementChild = [];\n var childElements = [];\n lastElementChild = (lastElement.childNodes);\n for (var z = 0; z < lastElementChild.length; z++) {\n if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {\n var childLI = lastElementChild[z]\n .querySelectorAll('li');\n if (childLI.length > 0) {\n for (var y = 0; y < childLI.length; y++) {\n childElements.push(childLI[y]);\n }\n }\n }\n }\n for (var i = 0; i < childElements.length; i++) {\n var count = 0;\n for (var j = 0; j < temp.length; j++) {\n if (!childElements[i].contains((temp[j]))) {\n count = count + 1;\n }\n }\n if (count === temp.length) {\n indentElements.push(childElements[i]);\n }\n }\n if (indentElements.length > 0) {\n for (var x = 0; x < indentElements.length; x++) {\n if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&\n this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {\n rightIndent.push(indentElements[x]);\n }\n }\n }\n if (rightIndent.length > 0) {\n this.nestedList(rightIndent);\n }\n }\n };\n Lists.prototype.revertList = function (elements) {\n var temp = [];\n for (var i = elements.length - 1; i >= 0; i--) {\n for (var j = i - 1; j >= 0; j--) {\n if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {\n temp.push(elements[i]);\n elements.splice(i, 1);\n break;\n }\n }\n }\n this.findUnSelected(temp, elements);\n var viewNode = [];\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {\n detach(this.domNode.contents(element)[0]);\n }\n var parentNode = elements[i].parentNode;\n var className = element.getAttribute('class');\n if (temp.length === 0) {\n var siblingList = elements[i].querySelectorAll('ul, ol');\n var firstNode = siblingList[0];\n if (firstNode) {\n var child = firstNode\n .querySelectorAll('li');\n if (child) {\n var nestedElement = createElement(firstNode.tagName);\n append([nestedElement], firstNode.parentNode);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n append([nestedElementLI], nestedElement);\n append([firstNode], nestedElementLI);\n }\n }\n }\n if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),\n 'LI' === parentNode.parentNode.tagName) {\n element.parentNode.insertBefore(this.closeTag('LI'), element);\n }\n else {\n var classAttr = '';\n if (className) {\n // eslint-disable-next-line\n classAttr += ' class=\"' + className + '\"';\n }\n if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {\n var wrapperclass = isNullOrUndefined(className) ? ' class=\"e-rte-wrap-inner\"' :\n ' class=\"' + className + ' e-rte-wrap-inner\"';\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +\n this.domNode.attributes(parentNode) + '>';\n this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));\n }\n else if (this.domNode.contents(element)[0].nodeType === 3) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||\n this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else {\n var childNode = element.firstChild;\n className = childNode.getAttribute('class');\n attributes(childNode, this.domNode.rawAttributes(parentNode));\n if (className && childNode.getAttribute('class')) {\n attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });\n }\n }\n append([this.openTag('LI')], element);\n prepend([this.closeTag('LI')], element);\n }\n this.domNode.insertAfter(this.openTag(parentNode.tagName), element);\n if (parentNode.parentNode.tagName === 'LI') {\n parentNode = parentNode.parentNode.parentNode;\n }\n if (viewNode.indexOf(parentNode) < 0) {\n viewNode.push(parentNode);\n }\n }\n for (var i = 0; i < viewNode.length; i++) {\n var node = viewNode[i];\n var nodeInnerHtml = node.innerHTML;\n var closeTag = /<\\/span>/g;\n var openTag = /<\\/span>/g;\n nodeInnerHtml = nodeInnerHtml.replace(closeTag, '');\n nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');\n this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));\n }\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n Lists.prototype.openTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n Lists.prototype.closeTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n return Lists;\n}());\nexport { Lists };\n","/**\n * Node appending methods.\n *\n * @hidden\n */\nvar InsertMethods = /** @class */ (function () {\n function InsertMethods() {\n }\n /**\n * WrapBefore method\n *\n * @param {Text} textNode - specifies the text node\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {Text} - returns the text value\n * @hidden\n\n */\n InsertMethods.WrapBefore = function (textNode, parentNode, isAfter) {\n parentNode.innerText = textNode.textContent;\n //eslint-disable-next-line\n (!isAfter) ? this.AppendBefore(parentNode, textNode) : this.AppendBefore(parentNode, textNode, true);\n if (textNode.parentNode) {\n textNode.parentNode.removeChild(textNode);\n }\n return parentNode.childNodes[0];\n };\n /**\n * Wrap method\n *\n * @param {HTMLElement} childNode - specifies the child node\n * @param {HTMLElement} parentNode - specifies the parent node.\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n InsertMethods.Wrap = function (childNode, parentNode) {\n this.AppendBefore(parentNode, childNode);\n parentNode.appendChild(childNode);\n return childNode;\n };\n /**\n * unwrap method\n *\n * @param {Node} node - specifies the node element.\n * @returns {Node[]} - returns the array of value\n * @hidden\n\n */\n InsertMethods.unwrap = function (node) {\n var parent = node.parentNode;\n var child = [];\n for (; node.firstChild; null) {\n child.push(parent.insertBefore(node.firstChild, node));\n }\n parent.removeChild(node);\n return child;\n };\n /**\n * AppendBefore method\n *\n * @param {HTMLElement} textNode - specifies the element\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n InsertMethods.AppendBefore = function (textNode, parentNode, isAfter) {\n return (parentNode.parentNode) ? ((!isAfter) ? parentNode.parentNode.insertBefore(textNode, parentNode)\n : parentNode.parentNode.insertBefore(textNode, parentNode.nextSibling)) :\n parentNode;\n };\n return InsertMethods;\n}());\nexport { InsertMethods };\n","import { NodeSelection } from './../../selection/index';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\n/**\n * Split the Node based on selection\n *\n * @hidden\n\n */\nvar NodeCutter = /** @class */ (function () {\n function NodeCutter() {\n this.position = -1;\n this.nodeSelection = new NodeSelection();\n }\n // Split Selection Node\n /**\n * GetSpliceNode method\n *\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetSpliceNode = function (range, node) {\n node = this.SplitNode(range, node, true);\n node = this.SplitNode(range, node, false);\n return node;\n };\n /**\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @param {boolean} isCollapsed - specifies the boolean value\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n NodeCutter.prototype.SplitNode = function (range, node, isCollapsed) {\n if (node) {\n var clone = range.cloneRange();\n var parent_1 = node.parentNode;\n var index = this.nodeSelection.getIndex(node);\n clone.collapse(isCollapsed);\n // eslint-disable-next-line\n (isCollapsed) ? clone.setStartBefore(node) : clone.setEndAfter(node);\n var fragment = clone.extractContents();\n if (isCollapsed) {\n node = parent_1.childNodes[index];\n fragment = this.spliceEmptyNode(fragment, false);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isImgElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n node = divNode.firstChild;\n parent_1.appendChild(node);\n }\n }\n }\n }\n else {\n node = parent_1.childNodes.length > 1 ? parent_1.childNodes[index] :\n parent_1.childNodes[0];\n fragment = this.spliceEmptyNode(fragment, true);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isImgElm(fragment) && fragment.textContent.trim() === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node, true);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n parent_1.insertBefore(divNode.firstChild, parent_1.firstChild);\n node = parent_1.firstChild;\n }\n }\n }\n }\n return node;\n }\n else {\n return null;\n }\n };\n NodeCutter.prototype.isImgElm = function (fragment) {\n var result = true;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG') {\n var firstChild = fragment.childNodes[0];\n for (var i = 0; !isNOU(firstChild.childNodes) && i < firstChild.childNodes.length; i++) {\n if (firstChild.childNodes[i].nodeName === 'IMG') {\n result = false;\n }\n }\n }\n else {\n result = true;\n }\n return result;\n };\n NodeCutter.prototype.spliceEmptyNode = function (fragment, isStart) {\n var len;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName === '#text' &&\n fragment.childNodes[0].textContent === '' || fragment.textContent === '') {\n len = -1;\n }\n else {\n len = fragment.childNodes.length - 1;\n }\n if (len > -1 && !isStart) {\n this.spliceEmptyNode(fragment.childNodes[len], isStart);\n }\n else if (len > -1) {\n this.spliceEmptyNode(fragment.childNodes[0], isStart);\n }\n else if (fragment.nodeType !== 3 && fragment.nodeType !== 11) {\n fragment.parentNode.removeChild(fragment);\n }\n return fragment;\n };\n // Cursor Position split\n NodeCutter.prototype.GetCursorStart = function (indexes, index, isStart) {\n indexes = (isStart) ? indexes : indexes.reverse();\n var position = indexes[0];\n for (var num = 0; num < indexes.length && ((isStart) ? (indexes[num] < index) : (indexes[num] >= index)); num++) {\n position = indexes[num];\n }\n return position;\n };\n /**\n * GetCursorRange method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Range} - returns the range value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorRange = function (docElement, range, node) {\n var cursorRange = docElement.createRange();\n var indexes = [];\n indexes.push(0);\n var str = this.TrimLineBreak(node.data);\n var index = str.indexOf(' ', 0);\n while (index !== -1) {\n if (indexes.indexOf(index) < 0) {\n indexes.push(index);\n }\n if (new RegExp('\\\\s').test(str[index - 1]) && (indexes.indexOf(index - 1) < 0)) {\n indexes.push(index - 1);\n }\n if (new RegExp('\\\\s').test(str[index + 1])) {\n indexes.push(index + 1);\n }\n index = str.indexOf(' ', (index + 1));\n }\n indexes.push(str.length);\n if ((indexes.indexOf(range.startOffset) >= 0)\n || ((indexes.indexOf(range.startOffset - 1) >= 0) && (range.startOffset !== 1\n || (range.startOffset === 1 && new RegExp('\\\\s').test(str[0])))\n || ((indexes[indexes.length - 1] - 1) === range.startOffset))) {\n cursorRange = range;\n this.position = 1;\n }\n else {\n var startOffset = this.GetCursorStart(indexes, range.startOffset, true);\n this.position = range.startOffset - startOffset;\n cursorRange.setStart(range.startContainer, startOffset);\n cursorRange.setEnd(range.startContainer, this.GetCursorStart(indexes, range.startOffset, false));\n }\n return cursorRange;\n };\n /**\n * GetCursorNode method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorNode = function (docElement, range, node) {\n return this.GetSpliceNode(this.GetCursorRange(docElement, range, node), node);\n };\n /**\n * TrimLineBreak method\n *\n * @param {string} line - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n\n */\n NodeCutter.prototype.TrimLineBreak = function (line) {\n return line.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n };\n return NodeCutter;\n}());\nexport { NodeCutter };\n","import * as EVENTS from './../../common/constant';\nimport { isNullOrUndefined as isNOU, detach, createElement, closest } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { markerClassName } from './dom-node';\nimport { NodeCutter } from './nodecutter';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Formats = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @hidden\n\n */\n function Formats(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Formats.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_TYPE, this.applyFormats, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Formats.prototype.getParentNode = function (node) {\n for (; node.parentNode && node.parentNode !== this.parent.editableElement; null) {\n node = node.parentNode;\n }\n return node;\n };\n Formats.prototype.onKeyUp = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var endCon = range.endContainer;\n var lastChild = endCon.lastChild;\n if (e.event.which === 13 && range.startContainer === endCon && endCon.nodeType !== 3) {\n var pTag = createElement('p');\n pTag.innerHTML = '
    ';\n if (lastChild && lastChild.nodeName === 'BR' && (lastChild.previousSibling && lastChild.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, lastChild);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n else {\n var brNode = this.parent.nodeSelection.getSelectionNodeCollectionBr(range)[0];\n if (!isNOU(brNode) && brNode.nodeName === 'BR' && (brNode.previousSibling && brNode.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, brNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n }\n }\n };\n Formats.prototype.onKeyDown = function (e) {\n if (e.event.which === 13) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startCon = (range.startContainer.textContent.length === 0 || range.startContainer.nodeName === 'PRE')\n ? range.startContainer : range.startContainer.parentElement;\n var endCon = (range.endContainer.textContent.length === 0 || range.endContainer.nodeName === 'PRE')\n ? range.endContainer : range.endContainer.parentElement;\n var preElem = closest(startCon, 'pre');\n var endPreElem = closest(endCon, 'pre');\n var liParent = !isNOU(preElem) && !isNOU(preElem.parentElement) && preElem.parentElement.tagName === 'LI';\n if (liParent) {\n return;\n }\n if (((isNOU(preElem) && !isNOU(endPreElem)) || (!isNOU(preElem) && isNOU(endPreElem)))) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);\n }\n if (e.event.which === 13 && !isNOU(preElem) && !isNOU(endPreElem)) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var lastEmpty = range.startContainer.childNodes[range.endOffset];\n var lastBeforeBr = range.startContainer.childNodes[range.endOffset - 1];\n var startParent = range.startContainer;\n if (!isNOU(lastEmpty) && !isNOU(lastBeforeBr) && isNOU(lastEmpty.nextSibling) &&\n lastEmpty.nodeName === 'BR' && lastBeforeBr.nodeName === 'BR') {\n this.paraFocus(range.startContainer);\n }\n else if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n //Double enter with any parent tag for the node\n while (startParent.parentElement.nodeName !== 'PRE' &&\n (startParent.textContent.length === 1 || startParent.textContent.length === 0)) {\n startParent = startParent.parentElement;\n }\n if (!isNOU(startParent.previousSibling) && startParent.previousSibling.nodeName === 'BR' &&\n isNOU(startParent.nextSibling)) {\n this.paraFocus(startParent.parentElement);\n }\n else {\n this.isNotEndCursor(preElem, range);\n }\n }\n else {\n //Cursor at start and middle\n this.isNotEndCursor(preElem, range);\n }\n }\n }\n };\n Formats.prototype.removeCodeContent = function (range) {\n var regEx = new RegExp(String.fromCharCode(65279), 'g');\n if (!isNOU(range.endContainer.textContent.match(regEx))) {\n var pointer = range.endContainer.textContent.charCodeAt(range.endOffset - 1) === 65279 ?\n range.endOffset - 2 : range.endOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n if (range.endContainer.textContent === '') {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer.parentElement, 0);\n }\n else {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer, pointer);\n }\n }\n };\n Formats.prototype.deleteContent = function (range) {\n if (range.startContainer !== range.endContainer || range.startOffset !== range.endOffset) {\n range.deleteContents();\n }\n };\n Formats.prototype.paraFocus = function (referNode) {\n var pTag = createElement('p');\n pTag.innerHTML = '
    ';\n this.parent.domNode.insertAfter(pTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n detach(referNode.lastChild);\n };\n Formats.prototype.isNotEndCursor = function (preElem, range) {\n var nodeCutter = new NodeCutter();\n var isEnd = range.startOffset === preElem.lastChild.textContent.length &&\n preElem.lastChild.textContent === range.startContainer.textContent;\n //Cursor at start point\n if (preElem.textContent.indexOf(range.startContainer.textContent) === 0 &&\n ((range.startOffset === 0 && range.endOffset === 0) || range.startContainer.nodeName === 'PRE')) {\n this.insertMarker(preElem, range);\n var brTag = createElement('br');\n preElem.childNodes[range.endOffset].parentElement.insertBefore(brTag, preElem.childNodes[range.endOffset]);\n }\n else {\n //Cursor at middle\n var cloneNode = nodeCutter.SplitNode(range, preElem, true);\n this.insertMarker(preElem, range);\n var previousSib = preElem.previousElementSibling;\n if (previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + cloneNode.innerHTML);\n detach(preElem);\n }\n }\n //To place the cursor position\n this.setCursorPosition(isEnd, preElem);\n };\n Formats.prototype.setCursorPosition = function (isEnd, preElem) {\n var isEmpty = false;\n var markerElem = this.parent.editableElement.querySelector('.tempSpan');\n var mrkParentElem = markerElem.parentElement;\n // eslint-disable-next-line\n markerElem.parentNode.textContent === '' ? isEmpty = true :\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n if (isEnd) {\n if (isEmpty) {\n //Enter press when pre element is empty\n if (mrkParentElem === preElem) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n else {\n this.focusSelectionParent(markerElem, mrkParentElem);\n }\n }\n else {\n var brElm = createElement('br');\n this.parent.domNode.insertAfter(brElm, markerElem);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n }\n else {\n // eslint-disable-next-line\n isEmpty ? this.focusSelectionParent(markerElem, mrkParentElem) : detach(markerElem);\n }\n };\n Formats.prototype.focusSelectionParent = function (markerElem, tempSpanPElem) {\n detach(markerElem);\n tempSpanPElem.innerHTML = '\\u200B';\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, tempSpanPElem, 0);\n };\n Formats.prototype.insertMarker = function (preElem, range) {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n if (range.startContainer.nodeName === 'PRE') {\n preElem.childNodes[range.endOffset].parentElement.insertBefore(tempSpan, preElem.childNodes[range.endOffset]);\n }\n else {\n range.startContainer.parentElement.insertBefore(tempSpan, range.startContainer);\n }\n };\n Formats.prototype.applyFormats = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var isSelectAll = false;\n if (this.parent.editableElement === range.endContainer &&\n !isNOU(this.parent.editableElement.children[range.endOffset - 1]) &&\n this.parent.editableElement.children[range.endOffset - 1].tagName === 'TABLE' && !range.collapsed) {\n isSelectAll = true;\n }\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var formatsNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < formatsNodes.length; i++) {\n var parentNode = void 0;\n var replaceHTML = void 0;\n if (e.subCommand.toLowerCase() === 'blockquote') {\n parentNode = this.getParentNode(formatsNodes[i]);\n replaceHTML = this.parent.domNode.isList(parentNode) ||\n parentNode.tagName === 'TABLE' ? parentNode.outerHTML : parentNode.innerHTML;\n }\n else {\n parentNode = formatsNodes[i];\n replaceHTML = parentNode.innerHTML;\n }\n if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n (e.subCommand.toLowerCase() !== 'pre' ||\n (!isNOU(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||\n isNOU(parentNode.parentNode) ||\n (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {\n continue;\n }\n this.cleanFormats(parentNode, e.subCommand);\n var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?\n 'p' : e.subCommand;\n var replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\\s+<'));\n if (parentNode.tagName === 'LI') {\n parentNode.innerHTML = '';\n parentNode.insertAdjacentHTML('beforeend', replaceTag);\n }\n else {\n this.parent.domNode.replaceWith(parentNode, replaceTag);\n }\n }\n this.preFormatMerge();\n var startNode = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endNode = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (!isNOU(startNode) && !isNOU(endNode)) {\n startNode = startNode.lastChild;\n endNode = endNode.lastChild;\n }\n save = this.parent.domNode.saveMarker(save, null);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n if (isSelectAll) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, endNode, 0, endNode.textContent.length);\n }\n else {\n save.restore();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Formats.prototype.preFormatMerge = function () {\n var preNodes = this.parent.editableElement.querySelectorAll('PRE');\n if (!isNOU(preNodes)) {\n for (var i = 0; i < preNodes.length; i++) {\n var previousSib = preNodes[i].previousElementSibling;\n if (!isNOU(previousSib) && previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + preNodes[i].innerHTML);\n detach(preNodes[i]);\n }\n }\n }\n };\n Formats.prototype.cleanFormats = function (element, tagName) {\n var ignoreAttr = ['display', 'font-size', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'font-weight'];\n tagName = tagName.toLowerCase();\n for (var i = 0; i < ignoreAttr.length && (tagName !== 'p' && tagName !== 'blockquote' && tagName !== 'pre'); i++) {\n element.style.removeProperty(ignoreAttr[i]);\n }\n };\n return Formats;\n}());\nexport { Formats };\n","import { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport * as CONSTANT from './../base/constant';\nimport { detach, Browser, isNullOrUndefined as isNOU, createElement, closest } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\nimport { updateTextNode } from './../../common/util';\n/**\n * Insert a HTML Node or Text\n *\n * @hidden\n\n */\nvar InsertHtml = /** @class */ (function () {\n function InsertHtml() {\n }\n InsertHtml.Insert = function (docElement, insertNode, editNode, isExternal) {\n var node;\n if (typeof insertNode === 'string') {\n var divNode = document.createElement('div');\n divNode.innerHTML = insertNode;\n node = isExternal ? divNode : divNode.firstChild;\n }\n else {\n if (isExternal && !(!isNOU(insertNode) && !isNOU(insertNode.classList) &&\n insertNode.classList.contains('pasteContent'))) {\n var divNode = document.createElement('div');\n divNode.appendChild(insertNode);\n node = divNode;\n }\n else {\n node = insertNode;\n }\n }\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n var isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&\n range.startContainer === range.endContainer;\n var isCollapsed = range.collapsed;\n var nodes = this.getNodeCollection(range, nodeSelection, node);\n var closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];\n if (isExternal || (!isNOU(node) && !isNOU(node.classList) &&\n node.classList.contains('pasteContent'))) {\n this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode);\n return;\n }\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n var preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n var sibNode = preNode.previousSibling;\n var parentNode = preNode.parentNode;\n if (nodes.length === 1 || (node.nodeName.toLowerCase() === 'table' && preNode.childElementCount === 0)) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n range.extractContents();\n if (insertNode.tagName === 'TABLE') {\n this.removeEmptyElements(editNode);\n }\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].nodeType !== 3 && nodes[index].parentNode != null) {\n if (nodes[index].nodeName === 'IMG') {\n continue;\n }\n nodes[index].parentNode.removeChild(nodes[index]);\n }\n }\n if (sibNode) {\n InsertMethods.AppendBefore(node, sibNode, true);\n }\n else {\n var previousNode = null;\n while (parentNode !== editNode && parentNode.firstChild &&\n (parentNode.textContent.trim() === '')) {\n var parentNode1 = parentNode.parentNode;\n previousNode = parentNode;\n parentNode = parentNode1;\n }\n if (previousNode !== null) {\n parentNode = previousNode;\n }\n if (parentNode.firstChild && (parentNode !== editNode ||\n (node.nodeName === 'TABLE' && isCursor && parentNode === range.startContainer &&\n parentNode === range.endContainer))) {\n if (parentNode.textContent.trim() === '' && parentNode !== editNode) {\n InsertMethods.AppendBefore(node, parentNode, false);\n detach(parentNode);\n }\n else {\n InsertMethods.AppendBefore(node, parentNode.firstChild, false);\n }\n }\n else {\n parentNode.appendChild(node);\n }\n }\n if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.childNodes.length);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.textContent.length);\n }\n }\n else {\n range.deleteContents();\n if (isCursor && range.startContainer.textContent === '') {\n range.startContainer.innerHTML = '';\n }\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(node);\n range.insertNode(frag);\n }\n else if (range.startContainer.nodeType === 1 && range.startContainer.nodeName.toLowerCase() === 'hr'\n && range.endContainer.nodeName.toLowerCase() === 'hr') {\n var paraElem = range.startContainer.nextElementSibling;\n if (paraElem) {\n if (paraElem.querySelector('br')) {\n detach(paraElem.querySelector('br'));\n }\n paraElem.appendChild(node);\n }\n }\n else {\n range.insertNode(node);\n }\n if (node.nodeType !== 3 && node.childNodes.length > 0) {\n nodeSelection.setSelectionText(docElement, node, node, 1, 1);\n }\n else if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionContents(docElement, node);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, node.textContent.length, node.textContent.length);\n }\n }\n };\n InsertHtml.pasteInsertHTML = function (nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode) {\n var isCursor = range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer;\n if (isCursor && range.startContainer === editNode && editNode.textContent === '') {\n var currentBlockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n nodeSelection.setSelectionText(docElement, currentBlockNode, currentBlockNode, 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n var lasNode;\n var sibNode;\n var isSingleNode;\n var preNode;\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n sibNode = isNOU(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n isSingleNode = true;\n }\n else {\n lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n isSingleNode = false;\n }\n }\n var containsBlockNode = false;\n this.removingComments(node);\n var allChildNodes = node.childNodes;\n for (var i = 0; i < allChildNodes.length; i++) {\n if (CONSTANT.BLOCK_TAGS.indexOf(allChildNodes[i].nodeName.toLocaleLowerCase()) >= 0) {\n containsBlockNode = true;\n break;\n }\n }\n var lastSelectionNode;\n var fragment = document.createDocumentFragment();\n if (!containsBlockNode) {\n if (!isCursor) {\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n if (isSingleNode) {\n preNode.parentNode.replaceChild(fragment, preNode);\n }\n else {\n range.deleteContents();\n detach(lasNode);\n // eslint-disable-next-line\n !isNOU(sibNode) ? sibNode.parentNode.appendChild(fragment) : editNode.appendChild(fragment);\n }\n }\n else {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n var nearestAnchor = closest(range.startContainer.parentElement, 'a');\n if (range.startContainer.nodeType === 3 && nearestAnchor) {\n var immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);\n if (immediateBlockNode.querySelectorAll('br').length > 0) {\n detach(immediateBlockNode.querySelector('br'));\n }\n var rangeElement = closest(nearestAnchor, 'span');\n rangeElement.appendChild(tempSpan);\n }\n else {\n range.insertNode(tempSpan);\n }\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n tempSpan.parentNode.replaceChild(fragment, tempSpan);\n }\n }\n else {\n this.insertTempNode(range, node, nodes, nodeCutter, editNode);\n var isFirstTextNode = true;\n var isPreviousInlineElem = void 0;\n var paraElm = void 0;\n var previousParent = void 0;\n range.deleteContents();\n while (node.firstChild) {\n if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {\n detach(node.firstChild);\n continue;\n }\n if (node.firstChild.nodeName === '#text' && isFirstTextNode ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0 && isFirstTextNode)) {\n lastSelectionNode = node.firstChild;\n if (isNOU(node.previousElementSibling)) {\n var firstParaElm = createElement('p');\n node.parentElement.insertBefore(firstParaElm, node);\n }\n node.previousElementSibling.appendChild(node.firstChild);\n }\n else {\n lastSelectionNode = node.firstChild;\n if (node.firstChild.nodeName === '#text' ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n paraElm.appendChild(node.firstChild);\n fragment.appendChild(paraElm);\n }\n else {\n previousParent.appendChild(node.firstChild);\n fragment.appendChild(previousParent);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else {\n fragment.appendChild(node.firstChild);\n isPreviousInlineElem = false;\n }\n isFirstTextNode = false;\n }\n }\n node.parentNode.replaceChild(fragment, node);\n }\n if (lastSelectionNode.nodeName === '#text') {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n else {\n this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n };\n InsertHtml.placeCursorEnd = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNOU(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode\n : lastSelectionNode.previousSibling) : lastSelectionNode;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n lastSelectionNode = isNOU(lastSelectionNode) ? node : lastSelectionNode;\n if (lastSelectionNode.nodeName === 'IMG') {\n this.imageFocus(lastSelectionNode, nodeSelection, docElement);\n }\n else {\n nodeSelection.setSelectionText(docElement, lastSelectionNode, lastSelectionNode, lastSelectionNode.textContent.length, lastSelectionNode.textContent.length);\n }\n this.removeEmptyElements(editNode);\n };\n InsertHtml.getNodeCollection = function (range, nodeSelection, node) {\n var nodes = [];\n if (range.startOffset === range.endOffset && range.startContainer === range.endContainer\n && (range.startContainer.nodeName === 'TD' || (range.startContainer.nodeType !== 3 &&\n node.classList && node.classList.contains('pasteContent')))) {\n nodes.push(range.startContainer.childNodes[range.endOffset]);\n }\n else {\n nodes = nodeSelection.getInsertNodeCollection(range);\n }\n return nodes;\n };\n InsertHtml.insertTempNode = function (range, node, nodes, nodeCutter, editNode) {\n if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset - 1]) &&\n range.startContainer.childNodes[range.endOffset - 1].nodeName === 'TABLE') {\n if (isNOU(range.startContainer.childNodes[range.endOffset - 1].nextSibling)) {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset - 1].nextSibling);\n }\n }\n else if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset]) &&\n range.startContainer.childNodes[range.endOffset].nodeName === 'TABLE') {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset]);\n }\n else if (range.startContainer === range.endContainer && range.startContainer.nodeType !== 3\n && node.firstChild.nodeName === 'HR') {\n if (range.startContainer.classList.contains('e-content') || range.startContainer.nodeName === 'BODY') {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.parentNode.insertBefore(node, range.startContainer);\n }\n }\n else {\n var blockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n if ((isNOU(blockNode) || isNOU(blockNode.parentElement)) && range.endContainer.nodeType !== 3) {\n blockNode = range.endContainer;\n range.setEnd(blockNode, range.endContainer.textContent.length);\n }\n if (!isNOU(blockNode) && editNode === blockNode &&\n range.startContainer === editNode && range.endContainer === editNode) {\n blockNode = editNode.firstElementChild;\n range.setStart(editNode.firstElementChild, editNode.firstElementChild.textContent.length);\n range.setEnd(editNode.firstElementChild, editNode.firstElementChild.textContent.length);\n }\n if (blockNode.nodeName === 'TD' || blockNode.nodeName === 'TH') {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n range.insertNode(tempSpan);\n tempSpan.parentNode.replaceChild(node, tempSpan);\n }\n else {\n var splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n splitedElm.parentNode.replaceChild(node, splitedElm);\n }\n }\n };\n InsertHtml.cursorPos = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode.classList.add('lastNode');\n editNode.innerHTML = updateTextNode(editNode.innerHTML);\n lastSelectionNode = editNode.querySelector('.lastNode');\n if (!isNOU(lastSelectionNode)) {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n lastSelectionNode.classList.remove('lastNode');\n if (lastSelectionNode.classList.length === 0) {\n lastSelectionNode.removeAttribute('class');\n }\n }\n };\n InsertHtml.imageFocus = function (node, nodeSelection, docElement) {\n var focusNode = document.createTextNode(' ');\n node.parentNode.insertBefore(focusNode, node.nextSibling);\n nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);\n };\n // eslint-disable-next-line\n InsertHtml.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n InsertHtml.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n InsertHtml.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' && element.parentElement.contentEditable !== 'true') {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n InsertHtml.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&\n emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&\n emptyElements[i].tagName !== 'SOURCE' && emptyElements[i].tagName !== 'HR') {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n InsertHtml.closestEle = function (element, editNode) {\n var el = element;\n while (el && el.nodeType === 1) {\n if (el.parentNode === editNode ||\n (!isNOU(el.parentNode.tagName) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n };\n /**\n * Insert method\n *\n * @hidden\n\n */\n InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n return InsertHtml;\n}());\nexport { InsertHtml };\n","import * as CONSTANT from './../base/constant';\nimport { NodeSelection } from '../../selection/selection';\nimport { NodeCutter } from './nodecutter';\nimport { InsertHtml } from './inserthtml';\nimport { createElement, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar LinkCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the editor manager\n * @hidden\n\n */\n function LinkCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n LinkCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LINK, this.linkCommand, this);\n };\n LinkCommand.prototype.linkCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'createlink':\n case 'editlink':\n this.createLink(e);\n break;\n case 'openlink':\n this.openLink(e);\n break;\n case 'removelink':\n this.removeLink(e);\n break;\n }\n };\n LinkCommand.prototype.createLink = function (e) {\n var closestAnchor = (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) &&\n closest(e.item.selectParent[0], 'a');\n closestAnchor = !isNOU(closestAnchor) ? closestAnchor :\n (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) ? (e.item.selectParent[0]) : null;\n if (!isNOU(closestAnchor) && closestAnchor.tagName === 'A') {\n var anchorEle = closestAnchor;\n var linkText = '';\n if (!isNOU(e.item.url)) {\n anchorEle.setAttribute('href', e.item.url);\n }\n if (!isNOU(e.item.title)) {\n anchorEle.setAttribute('title', e.item.title);\n }\n if (!isNOU(e.item.text) && e.item.text !== '') {\n linkText = anchorEle.innerText;\n anchorEle.innerText = e.item.text;\n }\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n else {\n anchorEle.removeAttribute('target');\n }\n if (linkText === e.item.text) {\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle, anchorEle, 1, 1);\n e.item.selection.restore();\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchorEle.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle.childNodes[0], anchorEle.childNodes[0], startIndex, anchorEle.childNodes[0].textContent.length);\n }\n }\n else {\n var domSelection = new NodeSelection();\n var range = domSelection.getRange(this.parent.currentDocument);\n var text = isNOU(e.item.text) ? true : e.item.text.replace(/ /g, '').localeCompare(range.toString()\n .replace(/\\n/g, ' ').replace(/ /g, '')) < 0;\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13) || e.item.action === 'Paste' || range.collapsed || text) {\n var anchor = this.createAchorNode(e);\n anchor.innerText = e.item.text === '' ? e.item.url : e.item.text;\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13)) {\n var startContainer = e.item.selection.range.startContainer;\n startContainer.textContent = this.removeText(startContainer.textContent, e.item.text);\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchor.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchor.childNodes[0], anchor.childNodes[0], startIndex, anchor.childNodes[0].textContent.length);\n }\n }\n else {\n this.createLinkNode(e);\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: 'Links',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n LinkCommand.prototype.createLinkNode = function (e) {\n var domSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = domSelection.getRange(this.parent.currentDocument);\n var nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));\n var save = domSelection.save(range, this.parent.currentDocument);\n var txtArray = [];\n var inlineNodes = [];\n var currentNode;\n var removeNodes = [];\n var anchorNodes = [];\n var finalinlineNodes = [];\n var cloneNode;\n for (var index = 0; index < nodes.length; index++) {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n txtArray[index] = nodes[index];\n }\n for (var i = 0; i < txtArray.length; i++) {\n var check = true;\n currentNode = txtArray[i];\n while (check === true) {\n if (currentNode.parentNode.nodeName === 'A') {\n var anchorEle = currentNode.parentNode;\n currentNode.parentNode.parentNode.insertBefore(anchorEle.firstChild, anchorEle);\n currentNode.parentNode.removeChild(anchorEle);\n }\n if (this.isBlockNode(currentNode.parentNode) || txtArray.length === 0 || i === 0 || i === txtArray.length - 1\n || range.startContainer.nodeType === 3) {\n inlineNodes[i] = currentNode;\n check = false;\n }\n else {\n currentNode = currentNode.parentNode;\n }\n }\n }\n for (var i = 0, j_1 = 0; i < inlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[j_1] = inlineNodes[i];\n }\n if (inlineNodes.length > 1 && i < inlineNodes.length - 1) {\n if ((inlineNodes[i].parentElement === inlineNodes[i + 1].parentElement) && (inlineNodes[i] === inlineNodes[i + 1])) {\n continue;\n }\n else {\n finalinlineNodes[j_1 + 1] = inlineNodes[i + 1];\n j_1++;\n }\n }\n }\n var j = 0;\n anchorNodes[j] = this.createAchorNode(e);\n for (var i = 0; i < finalinlineNodes.length; i++) {\n if (i === 0) {\n cloneNode = finalinlineNodes[i].cloneNode(true);\n anchorNodes[i].appendChild(cloneNode);\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n var cln = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cln);\n }\n else {\n j = j + 1;\n anchorNodes[j] = this.createAchorNode(e);\n cloneNode = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cloneNode);\n }\n }\n }\n this.parent.nodeSelection.setRange(document, save.range);\n for (var i = 0, j_2 = 0, k = 0; i <= finalinlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[i].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i].nextSibling);\n if (this.parent.domNode.blockNodes().length === 1) {\n this.parent.nodeSelection.setSelectionNode(this.parent.currentDocument, anchorNodes[j_2]);\n }\n removeNodes[k] = finalinlineNodes[i];\n k++;\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n else {\n j_2 = j_2 + 1;\n finalinlineNodes[i + 1].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i + 1]);\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n }\n }\n for (var i = 0; i < removeNodes.length; i++) {\n if (removeNodes[i].parentNode) {\n removeNodes[i].parentNode.removeChild(removeNodes[i]);\n }\n }\n };\n LinkCommand.prototype.createAchorNode = function (e) {\n var anchorEle = createElement('a', {\n className: 'e-rte-anchor',\n attrs: {\n href: e.item.url,\n title: isNOU(e.item.title) || e.item.title === '' ? e.item.url : e.item.title\n }\n });\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n return anchorEle;\n };\n LinkCommand.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || nodeCollection[index].textContent.trim() === '') {\n if (nodeCollection[index].nodeName !== 'IMG') {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n }\n return nodeCollection.reverse();\n };\n LinkCommand.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n LinkCommand.prototype.removeText = function (text, val) {\n var arr = text.split(' ');\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n i--;\n }\n }\n return arr.join(' ') + ' ';\n };\n LinkCommand.prototype.openLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n LinkCommand.prototype.removeLink = function (e) {\n var blockNodes = this.parent.domNode.blockNodes();\n if (blockNodes.length < 2) {\n this.parent.domNode.setMarker(e.item.selection);\n var closestAnchor = closest(e.item.selectParent[0], 'a');\n var selectParent = closestAnchor ? closestAnchor : e.item.selectParent[0];\n var parent_1 = selectParent.parentNode;\n var child = [];\n for (; selectParent.firstChild; null) {\n child.push(parent_1.insertBefore(selectParent.firstChild, selectParent));\n }\n parent_1.removeChild(selectParent);\n if (child && child.length === 1) {\n e.item.selection.startContainer = e.item.selection.getNodeArray(child[child.length - 1], true);\n e.item.selection.endContainer = e.item.selection.startContainer;\n }\n e.item.selection = this.parent.domNode.saveMarker(e.item.selection);\n }\n else {\n for (var i = 0; i < blockNodes.length; i++) {\n var linkNode = blockNodes[i].querySelectorAll('a');\n for (var j = 0; j < linkNode.length; j++) {\n if (document.getSelection().containsNode(linkNode[j], true)) {\n linkNode[j].outerHTML = linkNode[j].innerHTML;\n }\n }\n }\n }\n e.item.selection.restore();\n this.callBack(e);\n };\n LinkCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return LinkCommand;\n}());\nexport { LinkCommand };\n","import * as CONSTANT from './../base/constant';\nimport { setStyleAttribute, closest } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Alignments = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function Alignments(parent) {\n this.alignments = {\n 'JustifyLeft': 'left',\n 'JustifyCenter': 'center',\n 'JustifyRight': 'right',\n 'JustifyFull': 'justify'\n };\n this.parent = parent;\n this.addEventListener();\n }\n Alignments.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.ALIGNMENT_TYPE, this.applyAlignment, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Alignments.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'justify-center':\n this.applyAlignment({ subCommand: 'JustifyCenter', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-full':\n this.applyAlignment({ subCommand: 'JustifyFull', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-left':\n this.applyAlignment({ subCommand: 'JustifyLeft', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-right':\n this.applyAlignment({ subCommand: 'JustifyRight', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Alignments.prototype.getTableNode = function (range) {\n var startNode = range.startContainer.nodeType === Node.ELEMENT_NODE\n ? range.startContainer : range.startContainer.parentNode;\n var cellNode = closest(startNode, 'td,th');\n return [cellNode];\n };\n Alignments.prototype.applyAlignment = function (e) {\n var isTableAlign = e.value === 'Table' ? true : false;\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n if (!isTableAlign) {\n this.parent.domNode.setMarker(save);\n var alignmentNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < alignmentNodes.length; i++) {\n var parentNode = alignmentNodes[i];\n setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });\n }\n var imageTags = this.parent.domNode.getImageTagInSelection();\n for (var i = 0; i < imageTags.length; i++) {\n var elementNode = [];\n elementNode.push(imageTags[i]);\n this.parent.imgObj.imageCommand({\n item: {\n selectNode: elementNode\n },\n subCommand: e.subCommand,\n value: e.subCommand,\n callBack: e.callBack,\n selector: e.selector\n });\n }\n this.parent.editableElement.focus();\n save = this.parent.domNode.saveMarker(save);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n save.restore();\n }\n else {\n setStyleAttribute(this.getTableNode(range)[0], { 'text-align': this.alignments[e.subCommand] });\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: (isTableAlign ? this.getTableNode(range) : this.parent.domNode.blockNodes())\n });\n }\n };\n return Alignments;\n}());\nexport { Alignments };\n","import * as CONSTANT from './../base/constant';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Indents internal component\n *\n * @hidden\n\n */\nvar Indents = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Indents(parent) {\n this.indentValue = 20;\n this.parent = parent;\n this.addEventListener();\n }\n Indents.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INDENT_TYPE, this.applyIndents, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Indents.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'indents':\n this.applyIndents({ subCommand: 'Indent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'outdents':\n this.applyIndents({ subCommand: 'Outdent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Indents.prototype.applyIndents = function (e) {\n var editEle = this.parent.editableElement;\n var isRtl = editEle.classList.contains('e-rtl');\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var indentsNodes = this.parent.domNode.blockNodes();\n var parentNodes = indentsNodes.slice();\n var listsNodes = [];\n for (var i = 0; i < parentNodes.length; i++) {\n if (parentNodes[i].tagName !== 'LI' && 'LI' === parentNodes[i].parentNode.tagName) {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i].parentNode);\n }\n else if (parentNodes[i].tagName === 'LI') {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i]);\n }\n }\n if (listsNodes.length > 0) {\n this.parent.observer.notify(EVENTS.KEY_DOWN_HANDLER, {\n event: {\n preventDefault: function () {\n return;\n },\n stopPropagation: function () {\n return;\n },\n shiftKey: (e.subCommand === 'Indent' ? false : true),\n which: 9,\n action: 'indent'\n },\n ignoreDefault: true\n });\n }\n for (var i = 0; i < indentsNodes.length; i++) {\n var parentNode = indentsNodes[i];\n var marginLeftOrRight = isRtl ? parentNode.style.marginRight : parentNode.style.marginLeft;\n var indentsValue = void 0;\n if (e.subCommand === 'Indent') {\n /* eslint-disable */\n indentsValue = marginLeftOrRight === '' ? this.indentValue + 'px' : parseInt(marginLeftOrRight, null) + this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n }\n else {\n indentsValue = (marginLeftOrRight === '' || marginLeftOrRight === '0px') ? '' : parseInt(marginLeftOrRight, null) - this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n /* eslint-enable */\n }\n }\n editEle.focus();\n if (isIDevice()) {\n setEditFrameFocus(editEle, e.selector);\n }\n save = this.parent.domNode.saveMarker(save);\n save.restore();\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n return Indents;\n}());\nexport { Indents };\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLASS_IMAGE_RIGHT = 'e-imgright';\nexport var CLASS_IMAGE_LEFT = 'e-imgleft';\nexport var CLASS_IMAGE_CENTER = 'e-imgcenter';\nexport var CLASS_IMAGE_BREAK = 'e-imgbreak';\nexport var CLASS_CAPTION = 'e-img-caption';\nexport var CLASS_RTE_CAPTION = 'e-rte-img-caption';\nexport var CLASS_CAPTION_INLINE = 'e-caption-inline';\nexport var CLASS_IMAGE_INLINE = 'e-imginline';\n","import { createElement, isNullOrUndefined as isNOU, detach, closest, addClass, removeClass, select, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar ImageCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function ImageCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ImageCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.IMAGE, this.imageCommand, this);\n };\n /**\n * imageCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n ImageCommand.prototype.imageCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'image':\n case 'replace':\n this.createImage(e);\n break;\n case 'insertlink':\n this.insertImageLink(e);\n break;\n case 'openimagelink':\n this.openImageLink(e);\n break;\n case 'editimagelink':\n this.editImageLink(e);\n break;\n case 'removeimagelink':\n this.removeImageLink(e);\n break;\n case 'remove':\n this.removeImage(e);\n break;\n case 'alttext':\n this.insertAltTextImage(e);\n break;\n case 'dimension':\n this.imageDimension(e);\n break;\n case 'caption':\n this.imageCaption(e);\n break;\n case 'justifyleft':\n this.imageJustifyLeft(e);\n break;\n case 'justifycenter':\n this.imageJustifyCenter(e);\n break;\n case 'justifyright':\n this.imageJustifyRight(e);\n break;\n case 'inline':\n this.imageInline(e);\n break;\n case 'break':\n this.imageBreak(e);\n break;\n }\n };\n ImageCommand.prototype.createImage = function (e) {\n var _this = this;\n var isReplaced = false;\n e.item.url = isNOU(e.item.url) || e.item.url === 'undefined' ? e.item.src : e.item.url;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].tagName === 'IMG') {\n var imgEle = e.item.selectParent[0];\n this.setStyle(imgEle, e);\n isReplaced = true;\n }\n else {\n var imgElement = createElement('img');\n this.setStyle(imgElement, e);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n if (!isNOU(e.selector) && e.selector === 'pasteCleanupModule') {\n e.callBack({ requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [imgElement]\n });\n }\n else {\n InsertHtml.Insert(this.parent.currentDocument, imgElement, this.parent.editableElement);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var imgElm_1 = (e.value === 'Replace' || isReplaced) ? e.item.selectParent[0] :\n (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);\n var preventLoadCall_1 = false;\n imgElm_1.addEventListener('load', function () {\n if (e.value === 'Replace' || isReplaced) {\n if (!preventLoadCall_1) {\n e.callBack({\n requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [imgElm_1]\n });\n preventLoadCall_1 = true;\n }\n }\n else {\n e.callBack({\n requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [imgElm_1]\n });\n }\n });\n }\n };\n ImageCommand.prototype.setStyle = function (imgElement, e) {\n if (!isNOU(e.item.url)) {\n imgElement.setAttribute('src', e.item.url);\n }\n imgElement.setAttribute('class', 'e-rte-image' + (isNOU(e.item.cssClass) ? '' : ' ' + e.item.cssClass));\n if (!isNOU(e.item.altText)) {\n imgElement.setAttribute('alt', e.item.altText);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n imgElement.setAttribute('width', this.calculateStyleValue(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n imgElement.setAttribute('height', this.calculateStyleValue(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n imgElement.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n imgElement.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n imgElement.style.minHeight = this.calculateStyleValue(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n imgElement.style.maxHeight = this.calculateStyleValue(e.item.height.maxHeight);\n }\n };\n ImageCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n ImageCommand.prototype.insertImageLink = function (e) {\n var anchor = createElement('a', {\n attrs: {\n href: e.item.url\n }\n });\n if (e.item.selectNode[0].parentElement.classList.contains('e-img-wrap')) {\n e.item.selection.restore();\n anchor.setAttribute('contenteditable', 'true');\n }\n anchor.appendChild(e.item.selectNode[0]);\n if (!isNOU(e.item.target)) {\n anchor.setAttribute('target', e.item.target);\n }\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.openImageLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n ImageCommand.prototype.removeImageLink = function (e) {\n var selectParent = e.item.selectParent[0];\n if (selectParent.classList.contains('e-img-caption')) {\n var capImgWrap = select('.e-img-wrap', selectParent);\n var textEle = select('.e-img-inner', selectParent);\n var newTextEle = textEle.cloneNode(true);\n detach(select('a', selectParent));\n detach(textEle);\n capImgWrap.appendChild(e.item.insertElement);\n capImgWrap.appendChild(newTextEle);\n }\n else {\n detach(selectParent);\n if (Browser.isIE) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.editImageLink = function (e) {\n e.item.selectNode[0].parentElement.href = e.item.url;\n if (isNOU(e.item.target)) {\n e.item.selectNode[0].parentElement.removeAttribute('target');\n }\n else {\n e.item.selectNode[0].parentElement.target = e.item.target;\n }\n this.callBack(e);\n };\n ImageCommand.prototype.removeImage = function (e) {\n if (closest(e.item.selectNode[0], 'a')) {\n if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNOU(e.item.selectNode[0].parentElement.innerText)) {\n detach(e.item.selectNode[0]);\n }\n else {\n detach(closest(e.item.selectNode[0], 'a'));\n }\n }\n else if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.insertAltTextImage = function (e) {\n e.item.selectNode[0].setAttribute('alt', e.item.altText);\n this.callBack(e);\n };\n ImageCommand.prototype.imageDimension = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.style.height = '';\n selectNode.style.width = '';\n selectNode.width = e.item.width;\n selectNode.height = e.item.height;\n this.callBack(e);\n };\n ImageCommand.prototype.imageCaption = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyLeft = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_CENTER);\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageInline = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n addClass([selectNode], classes.CLASS_IMAGE_INLINE);\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageBreak = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], classes.CLASS_IMAGE_BREAK);\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return ImageCommand;\n}());\nexport { ImageCommand };\n","import { createElement, closest, detach, Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar TableCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function TableCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n TableCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.TABLE, this.createTable, this);\n this.parent.observer.on(CONSTANT.INSERT_ROW, this.insertRow, this);\n this.parent.observer.on(CONSTANT.INSERT_COLUMN, this.insertColumn, this);\n this.parent.observer.on(CONSTANT.DELETEROW, this.deleteRow, this);\n this.parent.observer.on(CONSTANT.DELETECOLUMN, this.deleteColumn, this);\n this.parent.observer.on(CONSTANT.REMOVETABLE, this.removeTable, this);\n this.parent.observer.on(CONSTANT.TABLEHEADER, this.tableHeader, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_ALIGN, this.tableVerticalAlign, this);\n this.parent.observer.on(CONSTANT.TABLE_MERGE, this.cellMerge, this);\n this.parent.observer.on(CONSTANT.TABLE_HORIZONTAL_SPLIT, this.HorizontalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_SPLIT, this.VerticalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_MOVE, this.tableMove, this);\n };\n TableCommand.prototype.createTable = function (e) {\n var table = createElement('table', { className: 'e-rte-table' });\n var tblBody = createElement('tbody');\n if (!isNOU(e.item.width.width)) {\n table.style.width = this.calculateStyleValue(e.item.width.width);\n }\n if (!isNOU(e.item.width.minWidth)) {\n table.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width.maxWidth)) {\n table.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n var tdWid = parseInt(e.item.width.width, 10) > 100 ?\n 100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;\n for (var i = 0; i < e.item.row; i++) {\n var row = createElement('tr');\n for (var j = 0; j < e.item.columns; j++) {\n var cell = createElement('td');\n cell.appendChild(createElement('br'));\n cell.style.width = tdWid + '%';\n row.appendChild(cell);\n }\n tblBody.appendChild(row);\n }\n table.appendChild(tblBody);\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);\n this.removeEmptyNode();\n e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);\n if (table.nextElementSibling === null) {\n var emptyPara = createElement('p');\n emptyPara.appendChild(createElement('br'));\n this.insertAfter(emptyPara, table);\n }\n table.querySelector('td').classList.add('e-cell-select');\n if (e.callBack) {\n e.callBack({\n requestType: 'Table',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [table]\n });\n }\n return table;\n };\n TableCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n TableCommand.prototype.removeEmptyNode = function () {\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty');\n for (var i = 0; i < emptyLiChild.length; i++) {\n detach(emptyLiChild[i]);\n if (emptyLiChild.length === i + 1) {\n emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty');\n i = -1;\n }\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n TableCommand.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n TableCommand.prototype.getSelectedCellMinMaxIndex = function (e) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var a = 0;\n var minI = e.length;\n var maxI = 0;\n var minJ = e[0].length;\n var maxJ = 0;\n //eslint-disable-next-line\n for (var i = 0; a < selectedCells.length; a++) {\n var selectedCellIndex = this.getCorrespondingIndex(selectedCells[a], e);\n var minMaxIndex = this.FindIndex(selectedCellIndex[0], selectedCellIndex[1], e);\n //eslint-disable-next-line\n minI = Math.min(selectedCellIndex[0], minI),\n maxI = Math.max(minMaxIndex[0], maxI),\n minJ = Math.min(selectedCellIndex[1], minJ),\n maxJ = Math.max(minMaxIndex[1], maxJ);\n }\n return {\n startRow: minI,\n endRow: maxI,\n startColumn: minJ,\n endColumn: maxJ\n };\n };\n TableCommand.prototype.insertRow = function (e) {\n var isBelow = e.item.subCommand === 'InsertRowBefore' ? false : true;\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n if (selectedCell.nodeName.toLowerCase() === 'th' && e.item.subCommand === 'InsertRowBefore') {\n return;\n }\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length === 0) {\n var lastRow = this.curTable.rows[this.curTable.rows.length - 1];\n var cloneRow = lastRow.cloneNode(true);\n cloneRow.removeAttribute('rowspan');\n this.insertAfter(cloneRow, lastRow);\n }\n else {\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minVal = isBelow ? minMaxIndex.endRow : minMaxIndex.startRow;\n var newRow = createElement('tr');\n var isHeaderSelect = this.curTable.querySelectorAll('th.e-cell-select').length > 0;\n for (var i = 0; i < allCells[minVal].length; i++) {\n if (isBelow && minVal < allCells.length - 1 && allCells[minVal][i] === allCells[minVal + 1][i] ||\n !isBelow && 0 < minVal && allCells[minVal][i] === allCells[minVal - 1][i]) {\n if (0 === i || 0 < i && allCells[minVal][i] !== allCells[minVal][i - 1]) {\n allCells[minVal][i].setAttribute('rowspan', (parseInt(allCells[minVal][i].getAttribute('rowspan'), 10) + 1).toString());\n }\n }\n else {\n var tdElement = createElement('td');\n tdElement.appendChild(createElement('br'));\n newRow.appendChild(tdElement);\n tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? (minVal + 1) : minVal][i].getAttribute('style'));\n }\n }\n // eslint-disable-next-line\n var selectedRow = void 0;\n if (isHeaderSelect && isBelow) {\n selectedRow = this.curTable.querySelector('tbody').childNodes[0];\n }\n else {\n selectedRow = this.curTable.rows[minVal];\n }\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertRowBefore') ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n (isHeaderSelect ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n this.insertAfter(newRow, selectedRow));\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.insertColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var curRow = closest(selectedCell, 'tr');\n var curCell;\n var allRows = closest((curRow), 'table').rows;\n var colIndex = Array.prototype.slice.call(curRow.querySelectorAll('th,td')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll('td,th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll('td,th').length + 1);\n var currentTabElm = closest(curRow, 'table');\n var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + \"%\";\n }\n for (var i = 0; i < allRows.length; i++) {\n curCell = allRows[i].querySelectorAll('th,td')[colIndex];\n var colTemplate = curCell.cloneNode(true);\n colTemplate.innerHTML = '';\n colTemplate.appendChild(createElement('br'));\n colTemplate.removeAttribute('class');\n colTemplate.removeAttribute('colspan');\n colTemplate.removeAttribute('rowspan');\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertColumnLeft') ? curCell.parentElement.insertBefore(colTemplate, curCell) :\n this.insertAfter(colTemplate, curCell);\n colTemplate.style.width = currentWidth.toFixed(4) + \"%\";\n delete colTemplate.dataset.oldWidth;\n }\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].style.width = (Number(thTdElm[i].dataset.oldWidth.split('%')[0]) * currentWidth / previousWidth).toFixed(4) + \"%\";\n delete thTdElm[i].dataset.oldWidth;\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, selectedCell, selectedCell, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var tBodyHeadEle = closest(selectedCell, selectedCell.tagName === 'TH' ? 'thead' : 'tbody');\n var rowIndex = tBodyHeadEle && Array.prototype.indexOf.call(tBodyHeadEle.childNodes, selectedCell.parentNode);\n this.curTable = closest(selectedCell, 'table');\n var curRow = closest(selectedCell, 'tr');\n if (curRow.querySelectorAll('th,td').length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n var deleteIndex = void 0;\n var allCells = this.getCorrespondingColumns();\n //eslint-disable-next-line\n var selectedMinMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minCol = selectedMinMaxIndex.startColumn;\n var maxCol = selectedMinMaxIndex.endColumn;\n for (var i = 0; i < allCells.length; i++) {\n var currentRow = allCells[i];\n for (var j = 0; j < currentRow.length; j++) {\n var currentCell = currentRow[j];\n //eslint-disable-next-line\n var currentCellIndex = this.getCorrespondingIndex(currentCell, allCells);\n var colSpanVal = parseInt(currentCell.getAttribute('colspan'), 10) || 1;\n if (currentCellIndex[1] + (colSpanVal - 1) >= minCol && currentCellIndex[1] <= maxCol) {\n if (colSpanVal > 1) {\n currentCell.setAttribute('colspan', (colSpanVal - 1).toString());\n }\n else {\n detach(currentCell);\n deleteIndex = j;\n if (Browser.isIE) {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n }\n }\n if (deleteIndex > -1) {\n var rowHeadEle = tBodyHeadEle.children[rowIndex];\n var nextFocusCell = rowHeadEle &&\n rowHeadEle.children[(deleteIndex <= rowHeadEle.children.length - 1 ? deleteIndex : deleteIndex - 1)];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n var sContainer = this.parent.nodeSelection.getRange(this.parent.currentDocument).startContainer;\n if (sContainer.nodeName !== 'TD') {\n var startChildLength = this.parent.nodeSelection.getRange(this.parent.currentDocument).startOffset;\n var focusNode = sContainer.children[startChildLength];\n if (focusNode) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, focusNode, 0);\n }\n }\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteRow = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var colIndex = Array.prototype.indexOf.call(selectedCell.parentNode.childNodes, selectedCell);\n this.curTable = closest(selectedCell, 'table');\n var currentRow;\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var maxI;\n var j;\n if (this.curTable.rows.length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n for (maxI = minMaxIndex.endRow; maxI >= minMaxIndex.startRow; maxI--) {\n currentRow = this.curTable.rows[maxI];\n for (j = 0; j < allCells[maxI].length; j++) {\n if (j === 0 || allCells[maxI][j] !== allCells[maxI][j - 1]) {\n if (1 < parseInt(allCells[maxI][j].getAttribute('rowspan'), 10)) {\n var rowSpanVal = parseInt(allCells[maxI][j].getAttribute('rowspan'), 10) - 1;\n //eslint-disable-next-line\n 1 === rowSpanVal ? allCells[maxI][j].removeAttribute('rowspan') : allCells[maxI][j].setAttribute('rowspan', rowSpanVal.toString());\n }\n }\n if (maxI < allCells.length - 1 && allCells[maxI][j] === allCells[maxI + 1][j] && (0 === maxI ||\n allCells[maxI][j] !== allCells[maxI - 1][j])) {\n var element = allCells[maxI][j];\n var index = void 0;\n for (index = j; 0 < index && allCells[maxI][index] === allCells[maxI][index - 1]; index--) {\n if (index === 0) {\n this.curTable.rows[maxI + 1].prepend(element);\n }\n else {\n allCells[maxI + 1][index - 1].insertAdjacentElement('afterend', element);\n }\n }\n }\n }\n var deleteIndex = currentRow.rowIndex;\n this.curTable.deleteRow(deleteIndex);\n var focusTrEle = !isNOU(this.curTable.rows[deleteIndex]) ? this.curTable.querySelectorAll('tbody tr')[deleteIndex]\n : this.curTable.querySelectorAll('tbody tr')[deleteIndex - 1];\n var nextFocusCell = focusTrEle && focusTrEle.querySelectorAll('td')[colIndex];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n else {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.removeTable = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var selectedTable = closest(selectedCell.parentElement, 'table');\n if (selectedTable) {\n e.item.selection.restore();\n detach(selectedTable);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableHeader = function (e) {\n var headerExit = false;\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var table = closest(selectedCell.parentElement, 'table');\n [].slice.call(table.childNodes).forEach(function (el) {\n if (el.nodeName === 'THEAD') {\n headerExit = true;\n }\n });\n if (table && !headerExit) {\n var cellCount = table.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(table.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n var header = table.createTHead();\n var row = header.insertRow(0);\n for (var j = 0; j < colSpanCount; j++) {\n var th = createElement('th');\n th.appendChild(createElement('br'));\n row.appendChild(th);\n }\n }\n else {\n table.deleteTHead();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableVerticalAlign = function (e) {\n if (e.item.subCommand === 'AlignTop') {\n e.item.tableCell.style.verticalAlign = 'top';\n }\n else if (e.item.subCommand === 'AlignMiddle') {\n e.item.tableCell.style.verticalAlign = 'middle';\n }\n else {\n e.item.tableCell.style.verticalAlign = 'bottom';\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.cellMerge = function (e) {\n if (isNOU(this.curTable)) {\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n }\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (selectedCells.length < 2) {\n return;\n }\n this.mergeCellContent();\n var minMaxIndexes = this.getSelectedMinMaxIndexes(this.getCorrespondingColumns());\n var firstCell = selectedCells[0];\n var rowSelectedCells = firstCell.parentElement.querySelectorAll('.e-cell-select');\n if (minMaxIndexes.startColumn < minMaxIndexes.endColumn) {\n firstCell.setAttribute('colspan', (minMaxIndexes.endColumn - minMaxIndexes.startColumn + 1).toString());\n }\n if (minMaxIndexes.startRow < minMaxIndexes.endRow) {\n firstCell.setAttribute('rowspan', (minMaxIndexes.endRow - minMaxIndexes.startRow + 1).toString());\n }\n var totalWidth = 0;\n for (var j = rowSelectedCells.length - 1; j >= 0; j--) {\n totalWidth = totalWidth + parseFloat(rowSelectedCells[j].style.width);\n }\n firstCell.style.width = totalWidth + '%';\n for (var i = 1; i <= selectedCells.length - 1; i++) {\n detach(selectedCells[i]);\n }\n for (var i = 0; i < this.curTable.rows.length; i++) {\n if (this.curTable.rows[i].innerHTML === '') {\n detach(this.curTable.rows[i]);\n }\n }\n this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());\n this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, \n // eslint-disable-next-line\n this.parent.nodeSelection.range.endContainer, 0);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.updateColSpanStyle = function (min, max, elements) {\n var colValue;\n var colIndex;\n var colMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = elements;\n //eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray[0].length - 1))) {\n for (colIndex === min; colIndex <= max; colIndex++) {\n // eslint-disable-next-line\n if (!(min < colIndex && eleArray[0][colIndex] === eleArray[0][colIndex - 1]) && 1 < (index =\n Math.min(parseInt(eleArray[0][colIndex].getAttribute('colspan'), 10) || 1, max - min + 1)) &&\n eleArray[0][colIndex] === eleArray[0][colIndex + 1]) {\n for (count = index - 1, colValue = 1; colValue < eleArray.length; colValue++) {\n if (eleArray[colValue][colIndex] !== eleArray[colValue - 1][colIndex]) {\n /* eslint-disable */\n for (colMin = colIndex; colMin < colIndex + index; colMin++) {\n if (1 < (attrValue = parseInt(eleArray[colValue][colMin].getAttribute('colspan'), 10) || 1) &&\n eleArray[colValue][colMin] === eleArray[colValue][colMin + 1]) {\n colMin += count = Math.min(count, attrValue - 1);\n }\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n /* eslint-enable */\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'colspan', 0, eleArray.length - 1, min, max);\n }\n }\n };\n TableCommand.prototype.updateRowSpanStyle = function (min, max, ele) {\n var rowValue;\n var colIndex;\n var rowMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = ele;\n // eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray.length - 1))) {\n for (rowValue = min; rowValue <= max; rowValue++) {\n // eslint-disable-next-line\n if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0]) && 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) || 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {\n for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {\n if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {\n for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {\n // eslint-disable-next-line\n if (1 < (attrValue = parseInt(eleArray[rowMin][colIndex].getAttribute('rowspan'), 10) || 1) && eleArray[rowMin][colIndex] === eleArray[rowMin + 1][colIndex]) {\n rowMin += count = Math.min(count, attrValue - 1);\n }\n // eslint-disable-next-line\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'rowspan', min, max, 0, eleArray[0].length - 1);\n }\n }\n };\n TableCommand.prototype.updateCellAttribute = function (elements, index, attr, min, max, firstIndex, length) {\n var rowIndex;\n var colIndex;\n var spanCount;\n for (rowIndex = min; rowIndex <= max; rowIndex++) {\n for (colIndex = firstIndex; colIndex <= length; colIndex++) {\n // eslint-disable-next-line\n min < rowIndex && elements[rowIndex][colIndex] === elements[rowIndex - 1][colIndex] ||\n firstIndex < colIndex && elements[rowIndex][colIndex] === elements[rowIndex][colIndex - 1] ||\n 1 < (spanCount = parseInt(elements[rowIndex][colIndex].getAttribute(attr), 10) || 1) &&\n (1 < spanCount - index ? elements[rowIndex][colIndex].setAttribute(attr, (spanCount - index).toString()) :\n elements[rowIndex][colIndex].removeAttribute(attr));\n }\n }\n };\n TableCommand.prototype.mergeCellContent = function () {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var innerHtml = selectedCells[0].innerHTML;\n for (var i = 1; i < selectedCells.length - 1; i++) {\n if ('
    ' !== selectedCells[i].innerHTML) {\n innerHtml = innerHtml + selectedCells[i].innerHTML;\n }\n }\n selectedCells[0].innerHTML = innerHtml;\n };\n TableCommand.prototype.getSelectedMinMaxIndexes = function (correspondingCells) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (0 < selectedCells.length) {\n var minRow = correspondingCells.length;\n var maxRow = 0;\n var minCol = correspondingCells[0].length;\n var maxCol = 0;\n for (var i = 0; i < selectedCells.length; i++) {\n var currentRowCol = this.getCorrespondingIndex(selectedCells[i], correspondingCells);\n var targetRowCol = this.FindIndex(currentRowCol[0], currentRowCol[1], correspondingCells);\n minRow = Math.min(currentRowCol[0], minRow);\n maxRow = Math.max(targetRowCol[0], maxRow);\n minCol = Math.min(currentRowCol[1], minCol);\n maxCol = Math.max(targetRowCol[1], maxCol);\n }\n return {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n };\n }\n return null;\n };\n TableCommand.prototype.HorizontalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingCells = this.getCorrespondingColumns();\n var activeCellRowSpan = this.activeCell.getAttribute('rowspan') ? parseInt(this.activeCell.getAttribute('rowspan'), 10) : 1;\n if (activeCellRowSpan > 1) {\n var avgCount = Math.ceil(activeCellRowSpan / 2);\n // eslint-disable-next-line\n 1 < avgCount ? this.activeCell.setAttribute('rowspan', avgCount.toString()) :\n this.activeCell.removeAttribute('rowspan');\n // eslint-disable-next-line\n 1 < (activeCellRowSpan - avgCount) ? newCell.setAttribute('rowspan', (activeCellRowSpan - avgCount).toString()) : newCell.removeAttribute('rowspan');\n var avgRowIndex = void 0;\n var colIndex = void 0;\n for (avgRowIndex = activeCellIndex[0] + Math.ceil(activeCellRowSpan / 2),\n colIndex = 0 === activeCellIndex[1] ? activeCellIndex[1]\n : activeCellIndex[1] - 1; 0 <= colIndex && (correspondingCells[avgRowIndex][colIndex] ===\n correspondingCells[avgRowIndex][colIndex - 1] || 0 < avgRowIndex && correspondingCells[avgRowIndex][colIndex]\n === correspondingCells[avgRowIndex - 1][colIndex]);) {\n colIndex--;\n }\n if (colIndex === -1) {\n // eslint-disable-next-line\n this.curTable.rows[avgRowIndex].firstChild ? this.curTable.rows[avgRowIndex].prepend(newCell) : this.curTable.appendChild(newCell);\n }\n else {\n correspondingCells[avgRowIndex][colIndex].insertAdjacentElement('afterend', newCell);\n }\n }\n else {\n var newTrEle = createElement('tr');\n newTrEle.appendChild(newCell);\n var selectedRow = correspondingCells[activeCellIndex[0]];\n for (var j = 0; j <= selectedRow.length - 1; j++) {\n if (selectedRow[j] !== selectedRow[j - 1] && selectedRow[j] !== this.activeCell) {\n selectedRow[j].setAttribute('rowspan', ((parseInt(selectedRow[j].getAttribute('rowspan'), 10) ?\n parseInt(selectedRow[j].getAttribute('rowspan'), 10) : 1) + 1).toString());\n }\n }\n this.activeCell.parentNode.insertAdjacentElement('afterend', newTrEle);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.VerticalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var allRows = this.curTable.rows;\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var avgWidth = parseFloat(this.activeCell.style.width) / 2;\n if (this.activeCell.tagName === 'TH' && isNaN(avgWidth)) {\n var cellCount = this.curTable.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(this.curTable.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n avgWidth = parseFloat((((this.activeCell.offsetWidth / 2) / this.curTable.offsetWidth) * 100).toFixed(1));\n }\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingColumns = this.getCorrespondingColumns();\n var activeCellcolSpan = parseInt(this.activeCell.getAttribute('colspan'), 10);\n if (activeCellcolSpan > 1) {\n // eslint-disable-next-line\n 1 < Math.ceil(activeCellcolSpan / 2) ? this.activeCell.setAttribute('colspan', (activeCellcolSpan / 2).toString())\n : this.activeCell.removeAttribute('colspan');\n // eslint-disable-next-line\n 1 < (activeCellcolSpan - activeCellcolSpan / 2) ? newCell.setAttribute('colspan', \n // eslint-disable-next-line\n (activeCellcolSpan - activeCellcolSpan / 2).toString()) : newCell.removeAttribute('colspan');\n }\n else {\n for (var i = 0; i <= allRows.length - 1; i++) {\n if (0 === i || correspondingColumns[i][activeCellIndex[1]] !== correspondingColumns[i - 1][activeCellIndex[1]]) {\n var currentCell = correspondingColumns[i][activeCellIndex[1]];\n if (currentCell !== this.activeCell) {\n currentCell.setAttribute('colspan', ((parseInt(currentCell.getAttribute('colspan'), 10) ?\n parseInt(currentCell.getAttribute('colspan'), 10) : 1) + 1).toString());\n }\n }\n }\n }\n this.activeCell.style.width = avgWidth + '%';\n newCell.style.width = avgWidth + '%';\n this.activeCell.parentNode.insertBefore(newCell, this.activeCell.nextSibling);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getCorrespondingColumns = function () {\n var elementArray = [];\n // eslint-disable-next-line\n var _this = this;\n var colspan = 0;\n var allRows = _this.curTable.querySelectorAll('tr');\n for (var i = 0; i <= allRows.length - 1; i++) {\n var ele = allRows[i];\n var index = 0;\n for (var j = 0; j <= ele.children.length - 1; j++) {\n /* eslint-disable */\n var colEle = ele.children[j];\n for (var ele_1 = colEle, colspan_1 = parseInt(ele_1.getAttribute('colspan'), 10) || 1, rowSpan = parseInt(ele_1.getAttribute('rowspan'), 10) || 1, rowIndex = i; rowIndex < i + rowSpan; rowIndex++) {\n for (var colIndex = index; colIndex < index + colspan_1; colIndex++) {\n elementArray[rowIndex] || (elementArray[rowIndex] = []);\n elementArray[rowIndex][colIndex] ? index++ : elementArray[rowIndex][colIndex] = colEle;\n }\n }\n index += colspan;\n }\n /* eslint-enable */\n }\n return elementArray;\n };\n // eslint-disable-next-line\n TableCommand.prototype.FindIndex = function (rowIndex, columnIndex, cells) {\n var nextIndex;\n var nextCol;\n for (nextIndex = rowIndex + 1, nextCol = columnIndex + 1; nextIndex < cells.length;) {\n if (cells[nextIndex][columnIndex] !== cells[rowIndex][columnIndex]) {\n nextIndex--;\n break;\n }\n nextIndex++;\n }\n for (nextIndex === cells.length && nextIndex--; nextCol < cells[rowIndex].length;) {\n if (cells[rowIndex][nextCol] !== cells[rowIndex][columnIndex]) {\n nextCol--;\n break;\n }\n nextCol++;\n }\n return nextCol === cells[rowIndex].length && nextCol--,\n [\n nextIndex,\n nextCol\n ];\n };\n TableCommand.prototype.getCorrespondingIndex = function (cell, allCells) {\n //let value: RowCol = new RowCol();\n for (var i = 0; i < allCells.length; i++) {\n for (var j = 0; j < allCells[i].length; j++) {\n if (allCells[i][j] === cell) {\n return [i, j];\n }\n }\n }\n return [];\n };\n TableCommand.prototype.highlightCells = function (minRow, maxRow, minCol, maxCol, eleArray) {\n var j;\n var k;\n var startCell;\n var endCell;\n var minRowIndex = minRow;\n var maxRowIndex = maxRow;\n var minColIndex = minCol;\n var maxColIndex = maxCol;\n var minMaxValues = new MinMax();\n for (j = minRowIndex; j <= maxRowIndex; j++) {\n /* eslint-disable */\n if ((1 < (parseInt(eleArray[j][minColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][minColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][minColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[j][maxColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][maxColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][maxColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n for (k = minColIndex; k <= maxColIndex; k++) {\n if ((1 < (parseInt(eleArray[minRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[minRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[minRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[maxRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n }\n minMaxValues = minRowIndex === minRow && maxRowIndex === maxRow && minColIndex === minCol && maxColIndex === maxCol ? {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n } : this.highlightCells(minRowIndex, maxRowIndex, minColIndex, maxColIndex, eleArray);\n }\n return minMaxValues;\n /* eslint-enable */\n };\n TableCommand.prototype.tableMove = function (e) {\n this.activeCell = e.selectNode[0];\n var target = e.event.target;\n var activeCellTag = this.activeCell.tagName;\n var targetCellTag = target.tagName;\n this.curTable = closest(target, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n this.parent.nodeSelection.Clear(this.parent.currentDocument);\n }\n if ((target.tagName !== 'TD' && target.tagName !== 'TH') && activeCellTag !== targetCellTag) {\n return;\n }\n var activeRowIndex = Array.prototype.slice.call((this.activeCell).parentElement.parentElement.children)\n .indexOf((this.activeCell).parentElement);\n var activeColumnIndex = Array.prototype.slice.call((this.activeCell).parentElement.children).indexOf(this.activeCell);\n var targetRowIndex = Array.prototype.slice.call(target.parentElement.parentElement.children)\n .indexOf(target.parentElement);\n var targetColumnIndex = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var activeCellList = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = activeCellList.length - 1; i >= 0; i--) {\n if (this.activeCell !== activeCellList[i]) {\n activeCellList[i].classList.remove('e-cell-select');\n }\n }\n if (activeRowIndex === targetRowIndex && activeColumnIndex === targetColumnIndex) {\n return;\n }\n var correspondingCells = this.getCorrespondingColumns();\n var activeIndexes = this.getCorrespondingIndex(this.activeCell, correspondingCells);\n var targetIndexes = this.getCorrespondingIndex(target, correspondingCells);\n var minMaxIndexes = this.highlightCells(Math.min(activeIndexes[0], targetIndexes[0]), Math.max(activeIndexes[0], \n /* eslint-disable */\n targetIndexes[0]), Math.min(activeIndexes[1], targetIndexes[1]), Math.max(activeIndexes[1], targetIndexes[1]), correspondingCells);\n for (var rowIndex = minMaxIndexes.startRow; rowIndex <= minMaxIndexes.endRow; rowIndex++) {\n for (var colIndex = minMaxIndexes.startColumn; colIndex <= minMaxIndexes.endColumn; colIndex++) {\n correspondingCells[rowIndex][colIndex].classList.add('e-cell-select');\n }\n }\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, this.parent.nodeSelection.range.endContainer, 0, 0);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, 0);\n }\n };\n ;\n return TableCommand;\n}());\nexport { TableCommand };\nvar MinMax = /** @class */ (function () {\n function MinMax() {\n }\n return MinMax;\n}());\n","/**\n * Is formatted or not.\n *\n * @hidden\n\n */\nvar IsFormatted = /** @class */ (function () {\n function IsFormatted() {\n }\n /**\n * getFormattedNode method\n *\n * @param {Node} node - specifies the node.\n * @param {string} format - specifies the string value.\n * @param {Node} endNode - specifies the end node\n * @returns {Node} - returns the node\n * @hidden\n\n */\n IsFormatted.prototype.getFormattedNode = function (node, format, endNode) {\n var parentNode = this.getFormatParent(node, format, endNode);\n if (parentNode !== null && parentNode !== endNode) {\n return parentNode;\n }\n return null;\n };\n IsFormatted.prototype.getFormatParent = function (node, format, endNode) {\n do {\n node = node.parentNode;\n } while (node && (node !== endNode) && !this.isFormattedNode(node, format));\n return node;\n };\n IsFormatted.prototype.isFormattedNode = function (node, format) {\n switch (format) {\n case 'bold':\n return IsFormatted.isBold(node);\n case 'italic':\n return IsFormatted.isItalic(node);\n case 'underline':\n return IsFormatted.isUnderline(node);\n case 'strikethrough':\n return IsFormatted.isStrikethrough(node);\n case 'superscript':\n return IsFormatted.isSuperscript(node);\n case 'subscript':\n return IsFormatted.isSubscript(node);\n case 'fontcolor':\n return this.isFontColor(node);\n case 'fontname':\n return this.isFontName(node);\n case 'fontsize':\n return this.isFontSize(node);\n case 'backgroundcolor':\n return this.isBackgroundColor(node);\n default:\n return false;\n }\n };\n /**\n * isBold method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isBold = function (node) {\n var validTags = ['strong', 'b'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontWeight === 'bold') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isItalic method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isItalic = function (node) {\n var validTags = ['em', 'i'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontStyle === 'italic') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isUnderline method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isUnderline = function (node) {\n var validTags = ['u'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'underline') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isStrikethrough method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isStrikethrough = function (node) {\n var validTags = ['del', 'strike'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'line-through') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSuperscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSuperscript = function (node) {\n var validTags = ['sup'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSubscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSubscript = function (node) {\n var validTags = ['sub'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontColor = function (node) {\n var color = node.style && node.style.color;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n color !== null && color !== '' && color !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n backColor !== null && backColor !== '' && backColor !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontSize = function (node) {\n var size = node.style && node.style.fontSize;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n size !== null && size !== '' && size !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontName = function (node) {\n var name = node.style && node.style.fontFamily;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n name !== null && name !== '' && name !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n // Get Formatted Node\n IsFormatted.inlineTags = [\n 'a',\n 'abbr',\n 'acronym',\n 'b',\n 'bdo',\n 'big',\n 'cite',\n 'code',\n 'dfn',\n 'em',\n 'i',\n 'kbd',\n 'label',\n 'q',\n 'samp',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'tt',\n 'u',\n 'var'\n ];\n return IsFormatted;\n}());\nexport { IsFormatted };\n","/**\n * `Selection` module is used to handle RTE Selections.\n */\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined as isNOU, Browser, closest, detach } from '@syncfusion/ej2-base';\nimport { DOMNode } from './dom-node';\nvar SelectionCommands = /** @class */ (function () {\n function SelectionCommands() {\n }\n /**\n * applyFormat method\n *\n * @param {Document} docElement - specifies the document\n * @param {string} format - specifies the string value\n * @param {Node} endNode - specifies the end node\n * @param {string} value - specifies the string value\n * @param {string} selector - specifies the string\n * @returns {void}\n * @hidden\n\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, value, selector) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];\n if (validFormats.indexOf(format) > -1) {\n if (format === 'backgroundcolor' && value === '') {\n value = 'transparent';\n }\n var preventRestore = false;\n var domSelection = new NodeSelection();\n var domNode = new DOMNode(endNode, docElement);\n var nodeCutter = new NodeCutter();\n var isFormatted = new IsFormatted();\n var range = domSelection.getRange(docElement);\n var save = domSelection.save(range, docElement);\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isCollapsed = false;\n var isFormat = false;\n var isCursor = false;\n var isFontStyle = (['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1);\n if (range.collapsed) {\n if (nodes.length > 0) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n else if (range.startContainer.nodeType === 3 && range.startContainer.parentElement.childElementCount > 0 &&\n range.startOffset > 0 && range.startContainer.parentElement.firstElementChild.tagName.toLowerCase() !== 'br') {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, range.startContainer);\n nodes.push(range.startContainer);\n }\n else {\n var cursorNode = this.insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode);\n domSelection.endContainer = domSelection.startContainer = domSelection.getNodeArray(cursorNode, true);\n var childNodes = cursorNode.nodeName === 'BR' && cursorNode.parentNode.childNodes;\n if (!isNOU(childNodes) && childNodes.length === 1 && childNodes[0].nodeName === 'BR' && nodes.length === 0) {\n domSelection.setSelectionText(docElement, range.startContainer, range.endContainer, 0, 0);\n preventRestore = true;\n }\n else {\n domSelection.endOffset = domSelection.startOffset = 1;\n }\n }\n }\n isCursor = range.collapsed;\n var isSubSup = false;\n for (var index = 0; index < nodes.length; index++) {\n var formatNode = isFormatted.getFormattedNode(nodes[index], format, endNode);\n if (formatNode === null) {\n if (format === 'subscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'superscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n else if (format === 'superscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'subscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n }\n if (index === 0 && formatNode === null) {\n isFormat = true;\n }\n if (formatNode !== null && (!isFormat || isFontStyle)) {\n nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);\n }\n else {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value);\n }\n domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);\n }\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n if (!preventRestore) {\n save.restore();\n }\n if (isSubSup) {\n this.applyFormat(docElement, format, endNode);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var cursorFormat = (cursorNodes.length > 0) ?\n (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?\n this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :\n isFormatted.getFormattedNode(cursorNodes[0], format, endNode) : null;\n var cursorNode = null;\n if (cursorFormat) {\n cursorNode = cursorNodes[0];\n InsertMethods.unwrap(cursorFormat);\n }\n else {\n if (cursorNodes.length > 1 && range.startOffset > 0 && (cursorNodes[0].firstElementChild &&\n cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {\n cursorNodes[0].innerHTML = '';\n }\n cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;\n }\n return cursorNode;\n };\n SelectionCommands.getCursorFormat = function (isFormatted, cursorNodes, format, endNode) {\n var currentNode;\n for (var index = 0; index < cursorNodes.length; index++) {\n currentNode = cursorNodes[index].lastElementChild ?\n cursorNodes[index].lastElementChild : cursorNodes[index];\n }\n return isFormatted.getFormattedNode(currentNode, format, endNode);\n };\n SelectionCommands.removeFormat = function (nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode) {\n var splitNode = null;\n if (!(range.startContainer === range.endContainer && range.startOffset === 0\n && range.endOffset === range.startContainer.length)) {\n var nodeIndex = [];\n var cloneNode = nodes[index];\n do {\n nodeIndex.push(domSelection.getIndex(cloneNode));\n cloneNode = cloneNode.parentNode;\n } while (cloneNode && (cloneNode !== formatNode));\n if (nodes[index].nodeName !== 'BR') {\n cloneNode = splitNode = (isCursor && (formatNode.textContent.length - 1) === range.startOffset) ?\n nodeCutter.SplitNode(range, formatNode, true)\n : nodeCutter.GetSpliceNode(range, formatNode);\n }\n if (!isCursor) {\n while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)\n && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {\n cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];\n nodeIndex.pop();\n }\n if (nodes[index].nodeName !== 'BR') {\n if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {\n nodes[index] = cloneNode;\n }\n else {\n var divNode = document.createElement('div');\n divNode.innerHTML = '​';\n if (cloneNode.nodeType !== 3) {\n cloneNode.insertBefore(divNode.firstChild, cloneNode.firstChild);\n nodes[index] = cloneNode.firstChild;\n }\n else {\n cloneNode.parentNode.insertBefore(divNode.firstChild, cloneNode);\n nodes[index] = cloneNode.previousSibling;\n cloneNode.parentNode.removeChild(cloneNode);\n }\n }\n }\n }\n else {\n var lastNode = splitNode;\n for (; lastNode.firstChild !== null && lastNode.firstChild.nodeType !== 3; null) {\n lastNode = lastNode.firstChild;\n }\n lastNode.innerHTML = '​';\n nodes[index] = lastNode.firstChild;\n }\n }\n var fontStyle;\n if (format === 'backgroundcolor') {\n fontStyle = formatNode.style.fontSize;\n }\n var bgStyle;\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNOU(bg)) {\n bgStyle = bg.style.backgroundColor;\n }\n }\n var formatNodeStyles = formatNode.getAttribute('style');\n var formatNodeTagName = formatNode.tagName;\n var child = InsertMethods.unwrap(formatNode);\n if (child[0] && !isFontStyle) {\n var nodeTraverse = child[index] ? child[index] : child[0];\n var textNode = nodeTraverse;\n for (; nodeTraverse && nodeTraverse.parentElement && nodeTraverse.parentElement !== endNode; \n // eslint-disable-next-line\n nodeTraverse = nodeTraverse) {\n if (nodeTraverse.parentElement && nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase() &&\n (nodeTraverse.parentElement.childElementCount > 1 || range.startOffset > 1)) {\n if (textNode.parentElement && textNode.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase()) {\n if ((range.startOffset === range.endOffset) && textNode.nodeType !== 1 &&\n !isNOU(textNode.textContent) && textNode.parentElement.childElementCount > 1) {\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n nodeCutter.SplitNode(range, textNode.parentElement, false);\n }\n }\n if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {\n if (formatNode.style.textDecoration === 'underline' &&\n nodeTraverse.parentElement.style.textDecoration !== 'underline') {\n nodeTraverse = nodeTraverse.parentElement;\n continue;\n }\n }\n InsertMethods.unwrap(nodeTraverse.parentElement);\n nodeTraverse = !isNOU(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :\n nodeTraverse.parentElement;\n }\n else {\n nodeTraverse = nodeTraverse.parentElement;\n }\n }\n }\n if (child.length > 0 && isFontStyle) {\n for (var num = 0; num < child.length; num++) {\n if (child[num].nodeType !== 3 || (child[num].textContent && child[num].textContent.trim().length > 0)) {\n child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));\n if (num === 0) {\n range.setStartBefore(child[num]);\n }\n else if (num === child.length - 1) {\n range.setEndAfter(child[num]);\n }\n }\n }\n var currentNodeElem = nodes[index].parentElement;\n if (!isNOU(fontStyle) && fontStyle !== '') {\n currentNodeElem.style.fontSize = fontStyle;\n }\n if (!isNOU(bgStyle) && bgStyle !== '') {\n currentNodeElem.style.backgroundColor = bgStyle;\n }\n if ((format === 'backgroundcolor' && !isNOU(fontStyle) && fontStyle !== '') &&\n currentNodeElem.parentElement.innerHTML === currentNodeElem.outerHTML) {\n var curParentElem = currentNodeElem.parentElement;\n curParentElem.parentElement.insertBefore(currentNodeElem, curParentElem);\n detach(curParentElem);\n }\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n }\n return nodes[index];\n };\n SelectionCommands.insertFormat = function (docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value) {\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);\n }\n if (format === 'uppercase' || format === 'lowercase') {\n nodes[index].textContent = (format === 'uppercase') ? nodes[index].textContent.toLocaleUpperCase()\n : nodes[index].textContent.toLocaleLowerCase();\n }\n else if (!(isFontStyle === true && value === '')) {\n var element = this.GetFormatNode(format, value);\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n nodes[index] = this.applyStyles(nodes, index, element);\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNOU(bg)) {\n nodes[index].parentElement.style.backgroundColor = bg.style.backgroundColor;\n }\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n }\n else {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n }\n }\n else {\n if (format !== 'uppercase' && format !== 'lowercase') {\n var element = this.getInsertNode(docElement, range, format, value);\n nodes[index] = element.firstChild;\n nodeCutter.position = 1;\n }\n else {\n nodeCutter.position = range.startOffset;\n }\n }\n return nodes[index];\n };\n SelectionCommands.applyStyles = function (nodes, index, element) {\n nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?\n InsertMethods.Wrap(nodes[index], element)\n : InsertMethods.WrapBefore(nodes[index], element, true);\n nodes[index] = this.getChildNode(nodes[index], element);\n return nodes[index];\n };\n SelectionCommands.getInsertNode = function (docElement, range, format, value) {\n var element = this.GetFormatNode(format, value);\n element.innerHTML = '​';\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(element);\n range.insertNode(frag);\n }\n else {\n range.insertNode(element);\n }\n return element;\n };\n SelectionCommands.getChildNode = function (node, element) {\n if (node === undefined || node === null) {\n element.innerHTML = '​';\n node = element.firstChild;\n }\n return node;\n };\n SelectionCommands.applySelection = function (nodes, domSelection, nodeCutter, index, isCollapsed) {\n if (nodes.length === 1 && !isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = 0;\n domSelection.endOffset = nodes[index].textContent.length;\n }\n else if (nodes.length === 1 && isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = nodeCutter.position;\n domSelection.endOffset = nodeCutter.position;\n }\n else if (index === 0) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.startOffset = 0;\n }\n else if (index === nodes.length - 1) {\n domSelection.endContainer = domSelection.getNodeArray(nodes[index], false);\n domSelection.endOffset = nodes[index].textContent.length;\n }\n return domSelection;\n };\n SelectionCommands.GetFormatNode = function (format, value, tagName, styles) {\n var node;\n switch (format) {\n case 'bold':\n return document.createElement('strong');\n case 'italic':\n return document.createElement('em');\n case 'underline':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'underline';\n return node;\n case 'strikethrough':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'line-through';\n return node;\n case 'superscript':\n return document.createElement('sup');\n case 'subscript':\n return document.createElement('sub');\n case 'fontcolor':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.color = value;\n node.style.textDecoration = 'inherit';\n return node;\n case 'fontname':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontFamily = value;\n return node;\n case 'fontsize':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontSize = value;\n return node;\n default:\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.backgroundColor = value;\n return node;\n }\n };\n SelectionCommands.updateStyles = function (ele, tag, styles) {\n if (styles !== null && tag === 'SPAN') {\n ele.setAttribute('style', styles);\n }\n };\n return SelectionCommands;\n}());\nexport { SelectionCommands };\n","import * as CONSTANT from './../base/constant';\nimport { SelectionCommands } from './selection-commands';\nimport * as EVENTS from './../../common/constant';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar SelectionBasedExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function SelectionBasedExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n SelectionBasedExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.SELECTION_TYPE, this.applySelection, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n SelectionBasedExec.prototype.keyDownHandler = function (e) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase'];\n if (e.event.ctrlKey && validFormats.indexOf(e.event.action) > -1) {\n e.event.preventDefault();\n SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement);\n this.callBack(e, e.event.action);\n }\n };\n SelectionBasedExec.prototype.applySelection = function (e) {\n SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.value, e.selector);\n this.callBack(e, e.subCommand);\n };\n SelectionBasedExec.prototype.callBack = function (event, action) {\n if (event.callBack) {\n event.callBack({\n requestType: action,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return SelectionBasedExec;\n}());\nexport { SelectionBasedExec };\n","import * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar InsertHtmlExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - sepcifies the parent element\n * @hidden\n\n */\n function InsertHtmlExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertHtmlExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERTHTML_TYPE, this.applyHtml, this);\n };\n InsertHtmlExec.prototype.applyHtml = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.value, this.parent.editableElement, true);\n if (e.subCommand === 'pasteCleanup') {\n var pastedElements = this.parent.editableElement.querySelectorAll('.pasteContent_RTE');\n var allPastedElements = [].slice.call(pastedElements);\n var imgElements = this.parent.editableElement.querySelectorAll('.pasteContent_Img');\n var allImgElm = [].slice.call(imgElements);\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n elements: allPastedElements,\n imgElem: allImgElm\n });\n }\n else {\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return InsertHtmlExec;\n}());\nexport { InsertHtmlExec };\n","/**\n * `Clear Format` module is used to handle Clear Format.\n */\nimport { closest } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nvar ClearFormat = /** @class */ (function () {\n function ClearFormat() {\n }\n /**\n * clear method\n *\n * @param {Document} docElement - specifies the document element.\n * @param {Node} endNode - specifies the end node\n * @param {string} selector - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n ClearFormat.clear = function (docElement, endNode, selector) {\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n var isCollapsed = range.collapsed;\n var nodes = nodeSelection.getInsertNodeCollection(range);\n var save = nodeSelection.save(range, docElement);\n if (!isCollapsed) {\n var preNode = void 0;\n if (nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {\n preNode = nodeCutter.GetSpliceNode(range, closest(nodes[0], 'table'));\n }\n else {\n preNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length > 1 && nodes[0].nodeName === 'IMG' ? 1 : 0]);\n }\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var i = 1;\n var lastText = nodes[nodes.length - i];\n while (nodes.length <= i && nodes[nodes.length - i].nodeName === 'BR') {\n i++;\n lastText = nodes[nodes.length - i];\n }\n var lasNode = nodeCutter.GetSpliceNode(range, lastText);\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n var exactNodes = nodeSelection.getNodeCollection(range);\n var cloneSelectNodes = exactNodes.slice();\n this.clearInlines(nodeSelection.getSelectionNodes(cloneSelectNodes), cloneSelectNodes, nodeSelection.getRange(docElement), nodeCutter, endNode);\n this.reSelection(docElement, save, exactNodes);\n range = nodeSelection.getRange(docElement);\n exactNodes = nodeSelection.getNodeCollection(range);\n var cloneParentNodes = exactNodes.slice();\n this.clearBlocks(docElement, cloneParentNodes, endNode, nodeCutter, nodeSelection);\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n this.reSelection(docElement, save, exactNodes);\n }\n };\n ClearFormat.reSelection = function (docElement, save, exactNodes) {\n var selectionNodes = save.getInsertNodes(exactNodes);\n save.startContainer = save.getNodeArray(selectionNodes[0], true, docElement);\n save.startOffset = 0;\n save.endContainer = save.getNodeArray(selectionNodes[selectionNodes.length - 1], false, docElement);\n var endIndexNode = selectionNodes[selectionNodes.length - 1];\n save.endOffset = (endIndexNode.nodeType === 3) ? endIndexNode.textContent.length\n : endIndexNode.childNodes.length;\n save.restore();\n };\n ClearFormat.clearBlocks = function (docElement, nodes, endNode, nodeCutter, nodeSelection) {\n var parentNodes = [];\n for (var index = 0; index < nodes.length; index++) {\n if (this.BLOCK_TAGS.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1\n && parentNodes.indexOf(nodes[index]) === -1) {\n parentNodes.push(nodes[index]);\n }\n else if ((this.BLOCK_TAGS.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1)\n && parentNodes.indexOf(nodes[index].parentNode) === -1\n && endNode !== nodes[index].parentNode) {\n parentNodes.push(nodes[index].parentNode);\n }\n }\n parentNodes = this.spliceParent(parentNodes, nodes)[0];\n parentNodes = this.removeParent(parentNodes);\n this.unWrap(docElement, parentNodes, nodeCutter, nodeSelection);\n };\n ClearFormat.spliceParent = function (parentNodes, nodes) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n var len = parentNodes[index1].childNodes.length;\n for (var index2 = 0; index2 < len; index2++) {\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) > 0)\n && (parentNodes[index1].childNodes[index2].childNodes.length > 0)) {\n nodes = this.spliceParent([parentNodes[index1].childNodes[index2]], nodes)[1];\n }\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) <= -1) &&\n (parentNodes[index1].childNodes[index2].textContent.trim() !== '')) {\n for (var index3 = 0; index3 < len; index3++) {\n if (nodes.indexOf(parentNodes[index1].childNodes[index3]) > -1) {\n nodes.splice(nodes.indexOf(parentNodes[index1].childNodes[index3]), 1);\n }\n }\n index2 = parentNodes[index1].childNodes.length;\n var parentIndex = parentNodes.indexOf(parentNodes[index1].parentNode);\n var nodeIndex = nodes.indexOf(parentNodes[index1].parentNode);\n if (parentIndex > -1) {\n parentNodes.splice(parentIndex, 1);\n }\n if (nodeIndex > -1) {\n nodes.splice(nodeIndex, 1);\n }\n var elementIndex = nodes.indexOf(parentNodes[index1]);\n if (elementIndex > -1) {\n nodes.splice(elementIndex, 1);\n }\n parentNodes.splice(index1, 1);\n index1--;\n }\n }\n }\n return [parentNodes, nodes];\n };\n ClearFormat.removeChild = function (parentNodes, parentNode) {\n var count = parentNode.childNodes.length;\n if (count > 0) {\n for (var index = 0; index < count; index++) {\n if (parentNodes.indexOf(parentNode.childNodes[index]) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNode.childNodes[index]);\n parentNodes.splice(parentNodes.indexOf(parentNode.childNodes[index]), 1);\n }\n }\n }\n return parentNodes;\n };\n ClearFormat.removeParent = function (parentNodes) {\n for (var index = 0; index < parentNodes.length; index++) {\n if (parentNodes.indexOf(parentNodes[index].parentNode) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNodes[index]);\n parentNodes.splice(index, 1);\n index--;\n }\n }\n return parentNodes;\n };\n ClearFormat.unWrap = function (docElement, parentNodes, nodeCutter, nodeSelection) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n if (this.NONVALID_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) > -1\n && parentNodes[index1].parentNode\n && this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].parentNode.nodeName.toLowerCase()) > -1) {\n nodeSelection.setSelectionText(docElement, parentNodes[index1], parentNodes[index1], 0, parentNodes[index1].childNodes.length);\n InsertMethods.unwrap(nodeCutter.GetSpliceNode(nodeSelection.getRange(docElement), parentNodes[index1].parentNode));\n }\n if (parentNodes[index1].nodeName.toLocaleLowerCase() !== 'p') {\n if (this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) < 0\n && parentNodes[index1].parentNode.nodeName.toLocaleLowerCase() !== 'p'\n && !((parentNodes[index1].nodeName.toLocaleLowerCase() === 'blockquote'\n || parentNodes[index1].nodeName.toLocaleLowerCase() === 'li')\n && this.IGNORE_PARENT_TAGS.indexOf(parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase()) > -1)\n && !(parentNodes[index1].childNodes.length === 1\n && parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase() === 'p')) {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement('p'));\n }\n var childNodes = InsertMethods.unwrap(parentNodes[index1]);\n if (childNodes.length === 1\n && childNodes[0].parentNode.nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement('p'));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n for (var index2 = 0; index2 < childNodes.length; index2++) {\n if (this.NONVALID_TAGS.indexOf(childNodes[index2].nodeName.toLowerCase()) > -1) {\n this.unWrap(docElement, [childNodes[index2]], nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() !== 'p') {\n var blockNodes = this.removeParent([childNodes[index2]]);\n this.unWrap(docElement, blockNodes, nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].parentNode.nodeName.toLocaleLowerCase() === childNodes[index2].nodeName.toLocaleLowerCase()) {\n InsertMethods.unwrap(childNodes[index2]);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(childNodes[index2], docElement.createElement('p'));\n InsertMethods.unwrap(childNodes[index2]);\n }\n }\n }\n else {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement('p'));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n }\n };\n ClearFormat.clearInlines = function (textNodes, nodes, range, nodeCutter, \n // eslint-disable-next-line\n endNode) {\n for (var index = 0; index < textNodes.length; index++) {\n if (textNodes[index].parentNode &&\n IsFormatted.inlineTags.indexOf(textNodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {\n nodeCutter.GetSpliceNode(range, textNodes[index].parentNode);\n this.removeInlineParent(textNodes[index].parentNode);\n }\n }\n };\n ClearFormat.removeInlineParent = function (textNodes) {\n var nodes = InsertMethods.unwrap(textNodes);\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].parentNode.childNodes.length === 1\n && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index].parentNode);\n }\n else if (IsFormatted.inlineTags.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index]);\n }\n }\n };\n ClearFormat.BLOCK_TAGS = ['address', 'article', 'aside', 'blockquote',\n 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'li', 'main', 'nav',\n 'noscript', 'ol', 'p', 'pre', 'section', 'ul'];\n ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'tbody', 'ul', 'ol', 'table', 'tfoot', 'tr'];\n ClearFormat.IGNORE_PARENT_TAGS = ['ul', 'ol', 'table'];\n ClearFormat.NONVALID_TAGS = ['thead', 'tbody', 'figcaption', 'td', 'tr', 'th', 'tfoot', 'figcaption', 'li'];\n return ClearFormat;\n}());\nexport { ClearFormat };\n","import * as CONSTANT from './../base/constant';\nimport { ClearFormat } from './clearformat';\nimport * as EVENTS from './../../common/constant';\n/**\n * Clear Format EXEC internal component\n *\n * @hidden\n\n */\nvar ClearFormatExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function ClearFormatExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ClearFormatExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.CLEAR_TYPE, this.applyClear, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ClearFormatExec.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'clear-format':\n this.applyClear({ subCommand: 'ClearFormat', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n ClearFormatExec.prototype.applyClear = function (e) {\n if (e.subCommand === 'ClearFormat') {\n ClearFormat.clear(this.parent.currentDocument, this.parent.editableElement, e.selector);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return ClearFormatExec;\n}());\nexport { ClearFormatExec };\n","import { debounce, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/selection';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoManager = /** @class */ (function () {\n function UndoRedoManager(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.addEventListener();\n }\n UndoRedoManager.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(EVENTS.ACTION, this.onAction, this);\n this.parent.observer.on(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoManager.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoManager.prototype.removeEventListener = function () {\n this.parent.observer.off(EVENTS.KEY_UP_HANDLER, this.keyUp);\n this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(EVENTS.ACTION, this.onAction);\n };\n /**\n * onAction method\n *\n * @param {IHtmlSubCommands} e - specifies the sub command\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.destroy = function () {\n this.removeEventListener();\n };\n UndoRedoManager.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoManager.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n /**\n * RTE collection stored html format.\n *\n * @function saveData\n * @param {KeyboardEvent} e - specifies the keyboard event\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.saveData = function (e) {\n var range = new NodeSelection().getRange(this.parent.currentDocument);\n var save = new NodeSelection().save(range, this.parent.currentDocument);\n var htmlText = this.parent.editableElement.innerHTML;\n var changEle = { text: htmlText, range: save };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.collapsed === range.collapsed)\n && (this.undoRedoStack[this.undoRedoStack.length - 1].range.startOffset === save.range.startOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].text.trim() === changEle.text.trim())) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @function undo\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.undo = function (e) {\n if (this.steps > 0) {\n var range = this.undoRedoStack[this.steps - 1].range;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.editableElement.innerHTML = removedContent;\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps--;\n if (e.callBack) {\n e.callBack({\n requestType: 'Undo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n var range = this.undoRedoStack[this.steps + 1].range;\n this.parent.editableElement.innerHTML = this.undoRedoStack[this.steps + 1].text;\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps++;\n if (e.callBack) {\n e.callBack({\n requestType: 'Redo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n UndoRedoManager.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoManager;\n}());\nexport { UndoRedoManager };\n","import * as EVENTS from '../../common/constant';\nimport { createElement, isNullOrUndefined as isNOU, detach } from '@syncfusion/ej2-base';\n/**\n * PasteCleanup for MsWord content\n *\n * @hidden\n\n */\nvar MsWordPaste = /** @class */ (function () {\n function MsWordPaste(parent) {\n this.olData = [\n 'decimal',\n 'lower-alpha',\n 'lower-roman',\n 'upper-alpha',\n 'upper-roman',\n 'lower-greek'\n ];\n this.ulData = [\n 'disc',\n 'square',\n 'circle',\n 'disc',\n 'square',\n 'circle'\n ];\n this.ignorableNodes = ['A', 'APPLET', 'B', 'BLOCKQUOTE', 'BR',\n 'BUTTON', 'CENTER', 'CODE', 'COL', 'COLGROUP', 'DD', 'DEL', 'DFN', 'DIR', 'DIV',\n 'DL', 'DT', 'EM', 'FIELDSET', 'FONT', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2',\n 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'IMG', 'IFRAME', 'INPUT', 'INS', 'LABEL',\n 'LI', 'OL', 'OPTION', 'P', 'PARAM', 'PRE', 'Q', 'S', 'SELECT', 'SPAN', 'STRIKE',\n 'STRONG', 'SUB', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',\n 'THEAD', 'TITLE', 'TR', 'TT', 'U', 'UL'];\n this.blockNode = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.borderStyle = ['border-top', 'border-right', 'border-bottom', 'border-left'];\n this.removableElements = ['o:p', 'style'];\n this.listContents = [];\n this.parent = parent;\n this.addEventListener();\n }\n MsWordPaste.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.MS_WORD_CLEANUP_PLUGIN, this.wordCleanup, this);\n };\n MsWordPaste.prototype.wordCleanup = function (e) {\n var wordPasteStyleConfig = e.allowedStylePropertiesArray;\n var listNodes = [];\n var tempHTMLContent = e.args.clipboardData.getData('text/HTML');\n var rtfData = e.args.clipboardData.getData('text/rtf');\n var elm = createElement('p');\n elm.setAttribute('id', 'MSWord-Content');\n elm.innerHTML = tempHTMLContent;\n var patern = /class='?Mso|style='[^ ]*\\bmso-/i;\n var patern2 = /class=\"?Mso|style=\"[^ ]*\\bmso-/i;\n var patern3 = /(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument)/gi;\n var pattern4 = /style='mso-width-source:/i;\n if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||\n pattern4.test(tempHTMLContent)) {\n this.imageConversion(elm, rtfData);\n tempHTMLContent = tempHTMLContent.replace(/]+>/i, '');\n this.addListClass(elm);\n listNodes = this.cleanUp(elm, listNodes);\n if (!isNOU(listNodes[0]) && listNodes[0].parentElement.tagName !== 'UL' &&\n listNodes[0].parentElement.tagName !== 'OL') {\n this.listConverter(listNodes);\n }\n this.styleCorrection(elm, wordPasteStyleConfig);\n this.removingComments(elm);\n this.removeUnwantedElements(elm);\n this.removeEmptyElements(elm);\n this.breakLineAddition(elm);\n this.removeClassName(elm);\n if (pattern4.test(tempHTMLContent)) {\n this.addTableBorderClass(elm);\n }\n e.callBack(elm.innerHTML);\n }\n else {\n e.callBack(elm.innerHTML);\n }\n };\n MsWordPaste.prototype.addListClass = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (!isNOU(allNodes[index].getAttribute('style')) && allNodes[index].getAttribute('style').replace(/ /g, '').replace('\\n', '').indexOf('mso-list:l') >= 0 &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 && allNodes[index].tagName.charAt(0) !== 'H') {\n allNodes[index].classList.add('msolistparagraph');\n }\n }\n };\n MsWordPaste.prototype.addTableBorderClass = function (elm) {\n var allTableElm = elm.querySelectorAll('table');\n var hasTableBorder = false;\n for (var i = 0; i < allTableElm.length; i++) {\n for (var j = 0; j < this.borderStyle.length; j++) {\n if (allTableElm[i].innerHTML.indexOf(this.borderStyle[j]) >= 0) {\n hasTableBorder = true;\n break;\n }\n }\n if (hasTableBorder) {\n allTableElm[i].classList.add('e-rte-table-border');\n hasTableBorder = false;\n }\n }\n };\n MsWordPaste.prototype.imageConversion = function (elm, rtfData) {\n this.checkVShape(elm);\n var imgElem = elm.querySelectorAll('img');\n var imgSrc = [];\n var base64Src = [];\n var imgName = [];\n var linkRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (imgElem.length > 0) {\n for (var i = 0; i < imgElem.length; i++) {\n imgSrc.push(imgElem[i].getAttribute('src'));\n imgName.push(imgElem[i].getAttribute('src').split('/')[imgElem[i].getAttribute('src').split('/').length - 1].split('.')[0]);\n }\n var hexValue = this.hexConversion(rtfData);\n for (var i = 0; i < hexValue.length; i++) {\n base64Src.push(this.convertToBase64(hexValue[i]));\n }\n for (var i = 0; i < imgElem.length; i++) {\n if (imgSrc[i].match(linkRegex)) {\n imgElem[i].setAttribute('src', imgSrc[i]);\n }\n else {\n imgElem[i].setAttribute('src', base64Src[i]);\n }\n imgElem[i].setAttribute('id', 'msWordImg-' + imgName[i]);\n }\n }\n };\n MsWordPaste.prototype.checkVShape = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var i = 0; i < allNodes.length; i++) {\n switch (allNodes[i].nodeName) {\n case 'V:SHAPETYPE':\n detach(allNodes[i]);\n break;\n case 'V:SHAPE':\n if (allNodes[i].firstElementChild.nodeName === 'V:IMAGEDATA') {\n var src = allNodes[i].firstElementChild.getAttribute('src');\n var imgElement = createElement('img');\n imgElement.setAttribute('src', src);\n allNodes[i].parentElement.insertBefore(imgElement, allNodes[i]);\n detach(allNodes[i]);\n }\n break;\n }\n }\n };\n MsWordPaste.prototype.convertToBase64 = function (hexValue) {\n var byteArr = this.conHexStringToBytes(hexValue.hex);\n var base64String = this.conBytesToBase64(byteArr);\n var base64 = hexValue.type ? 'data:' + hexValue.type + ';base64,' + base64String : null;\n return base64;\n };\n MsWordPaste.prototype.conBytesToBase64 = function (byteArr) {\n var base64Str = '';\n var base64Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var byteArrLen = byteArr.length;\n for (var i = 0; i < byteArrLen; i += 3) {\n var array3 = byteArr.slice(i, i + 3);\n var array3length = array3.length;\n var array4 = [];\n if (array3length < 3) {\n for (var j = array3length; j < 3; j++) {\n array3[j] = 0;\n }\n }\n array4[0] = (array3[0] & 0xFC) >> 2;\n array4[1] = ((array3[0] & 0x03) << 4) | (array3[1] >> 4);\n array4[2] = ((array3[1] & 0x0F) << 2) | ((array3[2] & 0xC0) >> 6);\n array4[3] = array3[2] & 0x3F;\n for (var j = 0; j < 4; j++) {\n if (j <= array3length) {\n base64Str += base64Char.charAt(array4[j]);\n }\n else {\n base64Str += '=';\n }\n }\n }\n return base64Str;\n };\n MsWordPaste.prototype.conHexStringToBytes = function (hex) {\n var byteArr = [];\n var byteArrLen = hex.length / 2;\n for (var i = 0; i < byteArrLen; i++) {\n byteArr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return byteArr;\n };\n MsWordPaste.prototype.hexConversion = function (rtfData) {\n // eslint-disable-next-line\n var picHead = /\\{\\\\pict[\\s\\S]+?\\\\bliptag\\-?\\d+(\\\\blipupi\\-?\\d+)?(\\{\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s\\}]*?/;\n var pic = new RegExp('(?:(' + picHead.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n var fullImg = rtfData.match(pic);\n var imgType;\n var result = [];\n if (!isNOU(fullImg)) {\n for (var i = 0; i < fullImg.length; i++) {\n if (picHead.test(fullImg[i])) {\n if (fullImg[i].indexOf('\\\\pngblip') !== -1) {\n imgType = 'image/png';\n }\n else if (fullImg[i].indexOf('\\\\jpegblip') !== -1) {\n imgType = 'image/jpeg';\n }\n else {\n continue;\n }\n result.push({\n hex: imgType ? fullImg[i].replace(picHead, '').replace(/[^\\da-fA-F]/g, '') : null,\n type: imgType\n });\n }\n }\n }\n return result;\n };\n MsWordPaste.prototype.removeClassName = function (elm) {\n var elmWithClass = elm.querySelectorAll('*[class]');\n for (var i = 0; i < elmWithClass.length; i++) {\n elmWithClass[i].removeAttribute('class');\n }\n };\n MsWordPaste.prototype.breakLineAddition = function (elm) {\n var allElements = elm.querySelectorAll('*');\n for (var i = 0; i < allElements.length; i++) {\n if (allElements[i].children.length === 0 && allElements[i].innerHTML === ' ' &&\n (allElements[i].innerHTML === ' ' && !allElements[i].closest('li')) &&\n !allElements[i].closest('td')) {\n var detachableElement = this.findDetachElem(allElements[i]);\n var brElement = createElement('br');\n if (!isNOU(detachableElement.parentElement)) {\n detachableElement.parentElement.insertBefore(brElement, detachableElement);\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.findDetachElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement) &&\n element.parentElement.textContent.trim() === '' && element.parentElement.tagName !== 'TD' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeUnwantedElements = function (elm) {\n var innerElement = elm.innerHTML;\n for (var i = 0; i < this.removableElements.length; i++) {\n var regExpStartElem = new RegExp('<' + this.removableElements[i] + '>', 'g');\n var regExpEndElem = new RegExp('', 'g');\n innerElement = innerElement.replace(regExpStartElem, '');\n innerElement = innerElement.replace(regExpEndElem, '');\n }\n elm.innerHTML = innerElement;\n elm.querySelectorAll(':empty');\n };\n MsWordPaste.prototype.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' &&\n element.parentElement.getAttribute('id') !== 'MSWord-Content' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (!isNOU(emptyElements[i].closest('td')) &&\n !isNOU(emptyElements[i].closest('td').querySelector('.MsoNormal'))) {\n emptyElements[i].innerHTML = '-';\n }\n if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&\n emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&\n emptyElements[i].tagName !== 'HR') {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.styleCorrection = function (elm, wordPasteStyleConfig) {\n var styleElement = elm.querySelectorAll('style');\n if (styleElement.length > 0) {\n var styles = styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n var styleClassObject_1 = !isNOU(styles) ? this.findStyleObject(styles) : null;\n var keys = Object.keys(styleClassObject_1);\n var values = keys.map(function (key) {\n return styleClassObject_1[key];\n });\n values = this.removeUnwantedStyle(values, wordPasteStyleConfig);\n this.filterStyles(elm, wordPasteStyleConfig);\n var resultElem = void 0;\n var fromClass = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i].split('.')[0] === '') {\n resultElem = elm.getElementsByClassName(keys[i].split('.')[1]);\n fromClass = true;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') >= 0) {\n continue;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') < 0) {\n resultElem = elm.getElementsByTagName(keys[i]);\n }\n else {\n resultElem = elm.querySelectorAll(keys[i]);\n }\n for (var j = 0; j < resultElem.length; j++) {\n var styleProperty = resultElem[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '') {\n var valueSplit = values[i].split(';');\n if (!fromClass) {\n for (var k = 0; k < valueSplit.length; k++) {\n if (styleProperty.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n valueSplit.splice(k, 1);\n k--;\n }\n }\n }\n values[i] = valueSplit.join(';') + ';';\n var changedValue = styleProperty + values[i];\n resultElem[j].setAttribute('style', changedValue);\n }\n else {\n values[i] = values[i].replace(/text-indent:-(.*?)(?=;|$)/gm, '');\n resultElem[j].setAttribute('style', values[i]);\n }\n }\n fromClass = false;\n }\n }\n };\n MsWordPaste.prototype.filterStyles = function (elm, wordPasteStyleConfig) {\n var elmWithStyles = elm.querySelectorAll('*[style]');\n for (var i = 0; i < elmWithStyles.length; i++) {\n var elemStyleProperty = elmWithStyles[i].getAttribute('style').split(';');\n var styleValue = '';\n for (var j = 0; j < elemStyleProperty.length; j++) {\n if (wordPasteStyleConfig.indexOf(elemStyleProperty[j].split(':')[0].trim()) >= 0) {\n styleValue += elemStyleProperty[j] + ';';\n }\n }\n elmWithStyles[i].setAttribute('style', styleValue);\n }\n };\n MsWordPaste.prototype.removeUnwantedStyle = function (values, wordPasteStyleConfig) {\n for (var i = 0; i < values.length; i++) {\n var styleValues = values[i].split(';');\n values[i] = '';\n for (var j = 0; j < styleValues.length; j++) {\n if (wordPasteStyleConfig.indexOf(styleValues[j].split(':')[0]) >= 0) {\n values[i] += styleValues[j] + ';';\n }\n }\n }\n return values;\n };\n MsWordPaste.prototype.findStyleObject = function (styles) {\n var styleClassObject = {};\n for (var i = 0; i < styles.length; i++) {\n var tempStyle = styles[i];\n var classNameCollection = tempStyle.replace(/([\\S ]+\\s+){[\\s\\S]+?}/gi, '$1');\n var stylesCollection = tempStyle.replace(/[\\S ]+\\s+{([\\s\\S]+?)}/gi, '$1');\n classNameCollection = classNameCollection.replace(/^[\\s]|[\\s]$/gm, '');\n stylesCollection = stylesCollection.replace(/^[\\s]|[\\s]$/gm, '');\n classNameCollection = classNameCollection.replace(/\\n|\\r|\\n\\r/g, '');\n stylesCollection = stylesCollection.replace(/\\n|\\r|\\n\\r/g, '');\n for (var classNames = classNameCollection.split(', '), j = 0; j < classNames.length; j++) {\n styleClassObject[classNames[j]] = stylesCollection;\n }\n }\n return styleClassObject;\n };\n MsWordPaste.prototype.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n MsWordPaste.prototype.cleanUp = function (node, listNodes) {\n // eslint-disable-next-line\n var temp = '';\n var tempCleaner = [];\n var prevflagState;\n var allNodes = node.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (this.ignorableNodes.indexOf(allNodes[index].nodeName) === -1 ||\n (allNodes[index].nodeType === 3 && allNodes[index].textContent.trim() === '')) {\n tempCleaner.push(allNodes[index]);\n continue;\n }\n else if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 &&\n allNodes[index].childElementCount !== 1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n if (allNodes[index].className.indexOf('MsoListParagraphCxSpFirst') >= 0 && listNodes.length > 0 &&\n listNodes[listNodes.length - 1] !== null) {\n listNodes.push(null);\n }\n listNodes.push(allNodes[index]);\n }\n if (prevflagState && (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) &&\n !(allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0)) {\n listNodes.push(null);\n }\n if (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) {\n if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n prevflagState = true;\n }\n else {\n prevflagState = false;\n }\n }\n }\n if (listNodes.length && (listNodes[listNodes.length - 1] !== null)) {\n listNodes.push(null);\n }\n return listNodes;\n };\n MsWordPaste.prototype.listConverter = function (listNodes) {\n var level;\n var data = [];\n var collection = [];\n var content = '';\n var stNode;\n var currentListStyle = '';\n for (var i = 0; i < listNodes.length; i++) {\n if (listNodes[i] === null) {\n data.push({ content: this.makeConversion(collection), node: listNodes[i - 1] });\n collection = [];\n continue;\n }\n if (listNodes[i].getAttribute('style') && listNodes[i].getAttribute('style').indexOf('mso-outline-level') !== -1) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('mso-outline-level', 'mso-outline'));\n }\n content = listNodes[i].getAttribute('style');\n if (content && content.indexOf('level') !== -1) {\n // eslint-disable-next-line\n level = parseInt(content.charAt(content.indexOf('level') + 5), null);\n }\n else {\n level = 1;\n }\n this.listContents = [];\n this.getListContent(listNodes[i]);\n var type = void 0;\n if (!isNOU(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n var tempNode = [];\n for (var j = 1; j < this.listContents.length; j++) {\n tempNode.push(this.listContents[j]);\n }\n var currentClassName = void 0;\n if (!isNOU(listNodes[i].className)) {\n currentClassName = listNodes[i].className;\n }\n if (!isNOU(listNodes[i].getAttribute('style'))) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('text-align:start;', ''));\n if (listNodes[i].style.textAlign !== '') {\n listNodes[i].setAttribute('style', 'text-align:' + listNodes[i].style.textAlign);\n currentListStyle = listNodes[i].getAttribute('style');\n }\n }\n collection.push({ listType: type, content: tempNode, nestedLevel: level, class: currentClassName,\n listStyle: currentListStyle });\n }\n }\n stNode = listNodes.shift();\n while (stNode) {\n var elemColl = [];\n for (var temp1 = 0; temp1 < data.length; temp1++) {\n if (data[temp1].node === stNode) {\n for (var index = 0; index < data[temp1].content.childNodes.length; index++) {\n elemColl.push(data[temp1].content.childNodes[index]);\n }\n for (var index = 0; index < elemColl.length; index++) {\n stNode.parentElement.insertBefore(elemColl[index], stNode);\n }\n break;\n }\n }\n stNode.remove();\n stNode = listNodes.shift();\n if (!stNode) {\n stNode = listNodes.shift();\n }\n }\n };\n MsWordPaste.prototype.makeConversion = function (collection) {\n var root = createElement('div');\n var temp;\n var pLevel = 1;\n var prevList;\n var listCount = 0;\n var elem;\n for (var index = 0; index < collection.length; index++) {\n var pElement = createElement('p');\n pElement.innerHTML = collection[index].content.join(' ');\n if ((collection[index].nestedLevel === 1) && listCount === 0 && collection[index].content) {\n root.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyle = this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n }\n else if (collection[index].nestedLevel === pLevel) {\n if (prevList.parentElement.tagName.toLowerCase() === collection[index].listType) {\n prevList.parentElement.appendChild(prevList = createElement('li'));\n prevList.appendChild(pElement);\n }\n else {\n temp = createElement(collection[index].listType);\n prevList.parentElement.parentElement.appendChild(temp);\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n }\n else if (collection[index].nestedLevel > pLevel) {\n if (!isNOU(prevList)) {\n for (var j = 0; j < collection[index].nestedLevel - pLevel; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li', { styles: 'list-style-type: none;' });\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyle = this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n temp.childNodes[0].style.listStyle =\n this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyle = this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n }\n }\n else if (collection[index].nestedLevel === 1) {\n if (root.lastChild.tagName.toLowerCase() === collection[index].listType) {\n temp = root.lastChild;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n }\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyle = this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n }\n else {\n elem = prevList;\n while (elem.parentElement) {\n elem = elem.parentElement;\n if (elem.attributes.getNamedItem('level')) {\n // eslint-disable-next-line\n if (parseInt(elem.attributes.getNamedItem('level').textContent, null) === collection[index].nestedLevel) {\n prevList = createElement('li');\n prevList.appendChild(pElement);\n elem.appendChild(prevList);\n break;\n // eslint-disable-next-line\n }\n else if (collection[index].nestedLevel > parseInt(elem.attributes.getNamedItem('level').textContent, null)) {\n elem.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyle = this.getListStyle(collection[index].listType, collection[index].nestedLevel);\n break;\n }\n }\n continue;\n }\n }\n prevList.setAttribute('class', collection[index].class);\n var currentStyle = prevList.getAttribute('style');\n prevList.setAttribute('style', (!isNOU(currentStyle) ? currentStyle : '') + collection[index].listStyle);\n pLevel = collection[index].nestedLevel;\n listCount++;\n }\n return root;\n };\n MsWordPaste.prototype.getListStyle = function (listType, nestedLevel) {\n nestedLevel = (nestedLevel > 0) ? nestedLevel - 1 : nestedLevel;\n if (listType === 'ol') {\n return (nestedLevel < this.olData.length ? this.olData[nestedLevel] : this.olData[0]);\n }\n else {\n return (nestedLevel < this.ulData.length ? this.ulData[nestedLevel] : this.ulData[0]);\n }\n };\n MsWordPaste.prototype.getListContent = function (elem) {\n var pushContent = '';\n var firstChild = elem.firstElementChild;\n if (firstChild.textContent.trim() === '' && !isNOU(firstChild.firstElementChild) &&\n firstChild.firstElementChild.nodeName === 'IMG') {\n pushContent = elem.innerHTML.trim();\n this.listContents.push('');\n this.listContents.push(pushContent);\n }\n else {\n var styleNodes = ['b', 'em'];\n if (firstChild.childNodes.length > 0 && (firstChild.querySelectorAll('b').length > 0\n || firstChild.querySelectorAll('em').length > 0)) {\n for (var i = 0; i < firstChild.childNodes.length; i++) {\n var nodeName = firstChild.childNodes[i].nodeName.toLowerCase();\n if (firstChild.childNodes[i].textContent.trim().length > 1 && styleNodes.indexOf(nodeName) !== -1) {\n pushContent = '<' + nodeName + '>' + firstChild.childNodes[i].textContent + '';\n this.listContents.push(pushContent);\n }\n else if (firstChild.childNodes[i].textContent.trim().length === 1) {\n this.listContents.push(firstChild.childNodes[i].textContent.trim());\n }\n }\n }\n else {\n pushContent = firstChild.textContent.trim();\n this.listContents.push(pushContent);\n }\n }\n detach(firstChild);\n this.listContents.push(elem.innerHTML);\n };\n return MsWordPaste;\n}());\nexport { MsWordPaste };\n","import * as CONSTANT from '../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Insert a Text Node or Text\n *\n * @hidden\n\n */\nvar InsertTextExec = /** @class */ (function () {\n /**\n * Constructor for creating the InsertText plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function InsertTextExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertTextExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERT_TEXT_TYPE, this.insertText, this);\n };\n InsertTextExec.prototype.insertText = function (e) {\n var node = document.createTextNode(e.value);\n InsertHtml.Insert(this.parent.currentDocument, node);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return InsertTextExec;\n}());\nexport { InsertTextExec };\n","import { Observer } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './constant';\nimport { Lists } from './../plugin/lists';\nimport { NodeSelection } from './../../selection/index';\nimport { DOMNode } from './../plugin/dom-node';\nimport { Formats } from './../plugin/formats';\nimport { LinkCommand } from './../plugin/link';\nimport { Alignments } from './../plugin/alignments';\nimport { Indents } from './../plugin/indents';\nimport { ImageCommand } from './../plugin/image';\nimport { TableCommand } from './../plugin/table';\nimport { SelectionBasedExec } from './../plugin/selection-exec';\nimport { InsertHtmlExec } from './../plugin/inserthtml-exec';\nimport { ClearFormatExec } from './../plugin/clearformat-exec';\nimport { UndoRedoManager } from './../plugin/undo';\nimport { MsWordPaste } from '../plugin/ms-word-clean-up';\nimport * as EVENTS from './../../common/constant';\nimport { InsertTextExec } from '../plugin/insert-text';\nimport { NodeCutter } from '../plugin/nodecutter';\n/**\n * EditorManager internal component\n *\n * @hidden\n\n */\nvar EditorManager = /** @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @hidden\n\n * @param {ICommandModel} options - specifies the command Model\n */\n function EditorManager(options) {\n this.currentDocument = options.document;\n this.editableElement = options.editableElement;\n this.nodeSelection = new NodeSelection();\n this.nodeCutter = new NodeCutter();\n this.domNode = new DOMNode(this.editableElement, this.currentDocument);\n this.observer = new Observer(this);\n this.listObj = new Lists(this);\n this.formatObj = new Formats(this);\n this.alignmentObj = new Alignments(this);\n this.indentsObj = new Indents(this);\n this.linkObj = new LinkCommand(this);\n this.imgObj = new ImageCommand(this);\n this.selectionObj = new SelectionBasedExec(this);\n this.inserthtmlObj = new InsertHtmlExec(this);\n this.insertTextObj = new InsertTextExec(this);\n this.clearObj = new ClearFormatExec(this);\n this.tableObj = new TableCommand(this);\n this.undoRedoManager = new UndoRedoManager(this, options.options);\n this.msWordPaste = new MsWordPaste(this);\n this.wireEvents();\n }\n EditorManager.prototype.wireEvents = function () {\n this.observer.on(EVENTS.KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.MODEL_CHANGED, this.onPropertyChanged, this);\n this.observer.on(EVENTS.MS_WORD_CLEANUP, this.onWordPaste, this);\n this.observer.on(EVENTS.ON_BEGIN, this.onBegin, this);\n };\n EditorManager.prototype.onWordPaste = function (e) {\n this.observer.notify(EVENTS.MS_WORD_CLEANUP_PLUGIN, e);\n };\n EditorManager.prototype.onPropertyChanged = function (props) {\n this.observer.notify(EVENTS.MODEL_CHANGED_PLUGIN, props);\n };\n EditorManager.prototype.editorKeyDown = function (e) {\n this.observer.notify(EVENTS.KEY_DOWN_HANDLER, e);\n };\n EditorManager.prototype.editorKeyUp = function (e) {\n this.observer.notify(EVENTS.KEY_UP_HANDLER, e);\n };\n EditorManager.prototype.onBegin = function (e) {\n this.observer.notify(EVENTS.SPACE_ACTION, e);\n };\n /* eslint-disable */\n /**\n * execCommand\n *\n * @param {ExecCommand} command - specifies the execution command\n * @param {T} value - specifes the value.\n * @param {Event} event - specifies the call back event\n * @param {Function} callBack - specifies the function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the values to be executed\n * @param {string} selector - specifies the selector values\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n EditorManager.prototype.execCommand = function (command, value, event, callBack, text, exeValue, selector) {\n switch (command.toLocaleLowerCase()) {\n case 'lists':\n this.observer.notify(EVENTS.LIST_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, item: exeValue });\n break;\n case 'formats':\n this.observer.notify(EVENTS.FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, exeValue: exeValue\n });\n break;\n case 'alignments':\n this.observer.notify(CONSTANT.ALIGNMENT_TYPE, {\n subCommand: value, event: event, callBack: callBack,\n selector: selector,\n value: exeValue\n });\n break;\n case 'indents':\n this.observer.notify(CONSTANT.INDENT_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'links':\n this.observer.notify(CONSTANT.LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });\n break;\n case 'files':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: 'Image', item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'images':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(CONSTANT.TABLE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'insertrowbefore':\n case 'insertrowafter':\n this.observer.notify(CONSTANT.INSERT_ROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'insertcolumnleft':\n case 'insertcolumnright':\n this.observer.notify(CONSTANT.INSERT_COLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deleterow':\n this.observer.notify(CONSTANT.DELETEROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deletecolumn':\n this.observer.notify(CONSTANT.DELETECOLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableremove':\n this.observer.notify(CONSTANT.REMOVETABLE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableheader':\n this.observer.notify(CONSTANT.TABLEHEADER, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'aligntop':\n case 'alignmiddle':\n case 'alignbottom':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_ALIGN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'merge':\n this.observer.notify(CONSTANT.TABLE_MERGE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'horizontalsplit':\n this.observer.notify(CONSTANT.TABLE_HORIZONTAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'verticalsplit':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'font':\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(CONSTANT.SELECTION_TYPE, { subCommand: value, event: event, callBack: callBack, value: text, selector: selector });\n break;\n case 'inserthtml':\n this.observer.notify(CONSTANT.INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text });\n break;\n case 'inserttext':\n this.observer.notify(CONSTANT.INSERT_TEXT_TYPE, { subCommand: value, callBack: callBack, value: text });\n break;\n case 'clear':\n this.observer.notify(CONSTANT.CLEAR_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'actions':\n this.observer.notify(EVENTS.ACTION, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n }\n };\n return EditorManager;\n}());\nexport { EditorManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Formatter } from './formatter';\nimport { EditorManager } from './../../editor-manager/base/editor-manager';\nimport { extend } from '@syncfusion/ej2-base';\nimport { htmlKeyConfig } from './../../common/config';\n/**\n * HTML adapter\n *\n * @hidden\n\n */\nvar HTMLFormatter = /** @class */ (function (_super) {\n __extends(HTMLFormatter, _super);\n function HTMLFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (_this.currentDocument && _this.element) {\n _this.updateFormatter(_this.element, _this.currentDocument, options.options);\n }\n return _this;\n }\n HTMLFormatter.prototype.initialize = function () {\n this.keyConfig = htmlKeyConfig;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the doucment\n * @param {number} options - specifies the options\n * @returns {void}\n * @hidden\n\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\nexport { HTMLFormatter };\n","import { IsFormatted } from './isformatted';\nimport * as CONSTANT from './../base/constant';\nimport { NodeSelection } from './../../selection/index';\nimport { getDefaultHtmlTbStatus } from './../../common/util';\n/**\n * Update Toolbar Status\n *\n * @hidden\n\n */\nexport var statusCollection = getDefaultHtmlTbStatus();\nvar ToolbarStatus = /** @class */ (function () {\n function ToolbarStatus() {\n }\n /**\n * get method\n *\n * @param {Document} docElement - specifies the document element\n * @param {Node} targetNode - specifies the target node\n * @param {string[]} formatNode - specifies the format node\n * @param {string[]} fontSize - specifies the font size\n * @param {string[]} fontName - specifies the font name.\n * @param {Node} documentNode - specifies the document node.\n * @returns {IToolbarStatus} - returns the toolbar status\n * @hidden\n\n */\n ToolbarStatus.get = function (docElement, targetNode, formatNode, fontSize, fontName, documentNode) {\n var formatCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeSelection = new NodeSelection();\n var nodes = documentNode ? [documentNode] : nodeSelection.getNodeCollection(nodeSelection.getRange(docElement));\n var nodesLength = nodes.length;\n var isNodeChanged = false;\n var range = nodeSelection.getRange(docElement);\n for (var index = 0; index < nodes.length; index++) {\n while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&\n nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== \"BR\" &&\n this.getImmediateBlockNode(nodes[index].parentNode, targetNode).textContent.replace(/\\u200B/g, '').length === 0 &&\n range.startContainer.textContent.replace(/\\u200B/g, '').length === 0 &&\n nodeSelection.get(docElement).toString().replace(/\\u200B/g, '').length === 0) {\n nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;\n isNodeChanged = true;\n }\n if (isNodeChanged && nodes[index]) {\n nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);\n isNodeChanged = false;\n }\n if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||\n (nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {\n nodes.splice(index, 1);\n index--;\n }\n }\n for (var index = 0; index < nodes.length; index++) {\n formatCollection = this.getFormatParent(docElement, formatCollection, nodes[index], targetNode, formatNode, fontSize, fontName);\n if ((index === 0 && formatCollection.bold) || !formatCollection.bold) {\n nodeCollection.bold = formatCollection.bold;\n }\n if ((index === 0 && formatCollection.insertcode) || !formatCollection.insertcode) {\n nodeCollection.insertcode = formatCollection.insertcode;\n }\n if ((index === 0 && formatCollection.italic) || !formatCollection.italic) {\n nodeCollection.italic = formatCollection.italic;\n }\n if ((index === 0 && formatCollection.underline) || !formatCollection.underline) {\n nodeCollection.underline = formatCollection.underline;\n }\n if ((index === 0 && formatCollection.strikethrough) || !formatCollection.strikethrough) {\n nodeCollection.strikethrough = formatCollection.strikethrough;\n }\n if ((index === 0 && formatCollection.superscript) || !formatCollection.superscript) {\n nodeCollection.superscript = formatCollection.superscript;\n }\n if ((index === 0 && formatCollection.subscript) || !formatCollection.subscript) {\n nodeCollection.subscript = formatCollection.subscript;\n }\n if ((index === 0 && formatCollection.fontcolor) || !formatCollection.fontcolor) {\n nodeCollection.fontcolor = formatCollection.fontcolor;\n }\n if ((index === 0 && formatCollection.fontname) || !formatCollection.fontname) {\n nodeCollection.fontname = formatCollection.fontname;\n }\n if ((index === 0 && formatCollection.fontsize) || !formatCollection.fontsize) {\n nodeCollection.fontsize = formatCollection.fontsize;\n }\n if ((index === 0 && formatCollection.backgroundcolor) || !formatCollection.backgroundcolor) {\n nodeCollection.backgroundcolor = formatCollection.backgroundcolor;\n }\n if ((index === 0 && formatCollection.orderedlist) || !formatCollection.orderedlist) {\n nodeCollection.orderedlist = formatCollection.orderedlist;\n }\n if ((index === 0 && formatCollection.unorderedlist) || !formatCollection.unorderedlist) {\n nodeCollection.unorderedlist = formatCollection.unorderedlist;\n }\n if ((index === 0 && formatCollection.alignments) || !formatCollection.alignments) {\n nodeCollection.alignments = formatCollection.alignments;\n }\n if ((index === 0 && formatCollection.formats) || !formatCollection.formats) {\n nodeCollection.formats = formatCollection.formats;\n }\n if ((index === 0 && formatCollection.createlink) || !formatCollection.createlink) {\n nodeCollection.createlink = formatCollection.createlink;\n }\n if ((index === 0 && formatCollection.numberFormatList) || !formatCollection.numberFormatList) {\n nodeCollection.numberFormatList = formatCollection.numberFormatList;\n }\n if ((index === 0 && formatCollection.bulletFormatList) || !formatCollection.bulletFormatList) {\n nodeCollection.bulletFormatList = formatCollection.bulletFormatList;\n }\n formatCollection = JSON.parse(JSON.stringify(statusCollection));\n }\n return nodeCollection;\n };\n ToolbarStatus.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {\n if (targetNode.contains(node) ||\n (node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {\n do {\n formatCollection = this.isFormattedNode(docElement, formatCollection, node, formatNode, fontSize, fontName);\n node = node.parentNode;\n } while (node && (node !== targetNode));\n }\n return formatCollection;\n };\n ToolbarStatus.isFormattedNode = function (docElement, formatCollection, node, formatNode, fontSize, fontName) {\n if (!formatCollection.bold) {\n formatCollection.bold = IsFormatted.isBold(node);\n }\n if (!formatCollection.italic) {\n formatCollection.italic = IsFormatted.isItalic(node);\n }\n if (!formatCollection.underline) {\n formatCollection.underline = IsFormatted.isUnderline(node);\n }\n if (!formatCollection.strikethrough) {\n formatCollection.strikethrough = IsFormatted.isStrikethrough(node);\n }\n if (!formatCollection.superscript) {\n formatCollection.superscript = IsFormatted.isSuperscript(node);\n }\n if (!formatCollection.subscript) {\n formatCollection.subscript = IsFormatted.isSubscript(node);\n }\n if (!formatCollection.fontcolor) {\n formatCollection.fontcolor = this.isFontColor(docElement, node);\n }\n if (!formatCollection.fontname) {\n formatCollection.fontname = this.isFontName(docElement, node, fontName);\n }\n if (!formatCollection.fontsize) {\n formatCollection.fontsize = this.isFontSize(node, fontSize);\n }\n if (!formatCollection.backgroundcolor) {\n formatCollection.backgroundcolor = this.isBackgroundColor(node);\n }\n if (!formatCollection.orderedlist) {\n formatCollection.orderedlist = this.isOrderedList(node);\n }\n if (!formatCollection.unorderedlist) {\n formatCollection.unorderedlist = this.isUnorderedList(node);\n }\n if (!formatCollection.alignments) {\n formatCollection.alignments = this.isAlignment(node);\n }\n if (!formatCollection.formats) {\n formatCollection.formats = this.isFormats(node, formatNode);\n if (formatCollection.formats === 'pre') {\n formatCollection.insertcode = true;\n }\n }\n if (!formatCollection.createlink) {\n formatCollection.createlink = this.isLink(node);\n }\n if (!formatCollection.numberFormatList) {\n formatCollection.numberFormatList = this.isNumberFormatList(node);\n }\n if (!formatCollection.bulletFormatList) {\n formatCollection.bulletFormatList = this.isBulletFormatList(node);\n }\n return formatCollection;\n };\n ToolbarStatus.isFontColor = function (docElement, node) {\n var color = node.style && node.style.color;\n if ((color === null || color === undefined || color === '') && node.nodeType !== 3) {\n color = this.getComputedStyle(docElement, node, 'color');\n }\n if (color !== null && color !== '' && color !== undefined) {\n return color;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isLink = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'a') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (backColor !== null && backColor !== '' && backColor !== undefined) {\n return backColor;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontSize = function (node, fontSize) {\n var size = node.style && node.style.fontSize;\n if ((size !== null && size !== '' && size !== undefined)\n && (fontSize === null || fontSize === undefined || (fontSize.indexOf(size) > -1))) {\n return size;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontName = function (docElement, node, fontName) {\n var name = node.style && node.style.fontFamily;\n if ((name === null || name === undefined || name === '') && node.nodeType !== 3) {\n name = this.getComputedStyle(docElement, node, 'font-family');\n }\n var index = null;\n if ((name !== null && name !== '' && name !== undefined)\n && (fontName === null || fontName === undefined || (fontName.filter(function (value, pos) {\n var pattern = new RegExp(name, 'i');\n if ((value.replace(/\"/g, '').replace(/ /g, '') === name.replace(/\"/g, '').replace(/ /g, '')) ||\n (value.search(pattern) > -1)) {\n index = pos;\n }\n }) && (index !== null)))) {\n return (index !== null) ? fontName[index] : name.replace(/\"/g, '');\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isOrderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ol') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isUnorderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ul') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isAlignment = function (node) {\n var align = node.style && node.style.textAlign;\n if (align === 'left') {\n return 'justifyleft';\n }\n else if (align === 'center') {\n return 'justifycenter';\n }\n else if (align === 'right') {\n return 'justifyright';\n }\n else if (align === 'justify') {\n return 'justifyfull';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFormats = function (node, formatNode) {\n if (((formatNode === undefined || formatNode === null)\n && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) > -1)\n || (formatNode !== null && formatNode !== undefined\n && formatNode.indexOf(node.nodeName.toLocaleLowerCase()) > -1)) {\n return node.nodeName.toLocaleLowerCase();\n }\n else {\n return null;\n }\n };\n ToolbarStatus.getComputedStyle = function (docElement, node, prop) {\n return docElement.defaultView.getComputedStyle(node, null).getPropertyValue(prop);\n };\n ToolbarStatus.isNumberFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'lower-alpha') {\n return 'Lower Alpha';\n }\n else if (list === 'number') {\n return 'Number';\n }\n else if (list === 'upper-alpha') {\n return 'Upper Alpha';\n }\n else if (list === 'lower-roman') {\n return 'Lower Roman';\n }\n else if (list === 'upper-roman') {\n return 'Upper Roman';\n }\n else if (list === 'lower-greek') {\n return 'Lower Greek';\n }\n else if (list === 'none') {\n return 'None';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isBulletFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'circle') {\n return 'Circle';\n }\n else if (list === 'square') {\n return 'Square';\n }\n else if (list === 'none') {\n return 'None';\n }\n else if (list === 'disc') {\n return 'Disc';\n }\n else {\n return null;\n }\n };\n return ToolbarStatus;\n}());\nexport { ToolbarStatus };\n","import * as events from '../base/constant';\nimport { ToolbarStatus } from '../../editor-manager/plugin/toolbar-status';\nimport { getDefaultHtmlTbStatus } from '../../common/util';\n/**\n * HtmlToolbarStatus module for refresh the toolbar status\n */\nvar HtmlToolbarStatus = /** @class */ (function () {\n function HtmlToolbarStatus(parent) {\n this.parent = parent;\n this.toolbarStatus = this.prevToolbarStatus = getDefaultHtmlTbStatus();\n this.addEventListener();\n }\n HtmlToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n HtmlToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRefresh, this.onRefreshHandler);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n HtmlToolbarStatus.prototype.onRefreshHandler = function (args) {\n if (this.parent.readonly) {\n return;\n }\n var fontsize = [];\n var fontName = [];\n var formats = [];\n this.parent.fontSize.items.forEach(function (item) {\n fontsize.push(item.value);\n });\n this.parent.fontFamily.items.forEach(function (item) {\n fontName.push(item.value);\n });\n this.parent.format.types.forEach(function (item) {\n formats.push(item.value.toLocaleLowerCase());\n });\n this.toolbarStatus = ToolbarStatus.get(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel(), formats, fontsize, fontName, args.documentNode);\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(events.toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(events.updateTbItemsStatus, { html: JSON.parse(tbStatusString), markdown: null });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n return HtmlToolbarStatus;\n}());\nexport { HtmlToolbarStatus };\n","import { getEditValue } from '../base/util';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the service.\n * @returns {void}\n */\n function ContentRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { className: 'e-rte-content', id: this.parent.getID() + 'rte-view' });\n var rteContent = getEditValue(rteObj.value, rteObj);\n this.editableElement = this.parent.createElement('div', {\n className: 'e-content',\n id: this.parent.getID() + '_rte-edit-view',\n attrs: {\n 'contenteditable': 'true'\n },\n innerHTML: rteContent\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the return element.\n * @hidden\n\n */\n ContentRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string element.\n */\n ContentRender.prototype.getText = function () {\n return this.getEditPanel().innerText;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the panel element.\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {Document} - specifies the document.\n * @hidden\n\n */\n ContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\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 { ContentRender } from '../renderer/content-renderer';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getEditValue } from '../base/util';\nvar IFRAMEHEADER = \"\\n \\n \\n \\n \\n \\n \";\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar IframeContentRender = /** @class */ (function (_super) {\n __extends(IframeContentRender, _super);\n function IframeContentRender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * The function is used to render Rich Text Editor iframe\n *\n * @hidden\n\n */\n IframeContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var rteContent = getEditValue(rteObj.value, rteObj);\n var iFrameBodyContent = '' +\n rteContent + '';\n var iFrameContent = IFRAMEHEADER + iFrameBodyContent;\n var iframe = this.parent.createElement('iframe', {\n innerHTML: iFrameContent,\n id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;'\n });\n this.setPanel(iframe);\n rteObj.element.appendChild(iframe);\n iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';\n iframe.contentDocument.body.setAttribute('aria-owns', this.parent.getID());\n iframe.contentDocument.open();\n iFrameContent = this.setThemeColor(iFrameContent, { color: '#333' });\n iframe.contentDocument.write(iFrameContent);\n iframe.contentDocument.close();\n if (rteObj.enableRtl) {\n this.contentPanel.contentDocument.body.setAttribute('class', 'e-rtl');\n }\n };\n IframeContentRender.prototype.setThemeColor = function (content, styles) {\n var fontColor = getComputedStyle(this.parent.element, '.e-richtexteditor').getPropertyValue('color');\n return content.replace(styles.color, fontColor);\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n IframeContentRender.prototype.getEditPanel = function () {\n var editNode;\n if (!isNullOrUndefined(this.contentPanel.contentDocument)) {\n editNode = this.contentPanel.contentDocument.body;\n }\n else {\n editNode = this.parent.inputElement;\n }\n return editNode;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n\n */\n IframeContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return IframeContentRender;\n}(ContentRender));\nexport { IframeContentRender };\n","import * as events from '../base/constant';\nimport { detach, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * XhtmlValidation module called when set enableXhtml as true\n */\nvar XhtmlValidation = /** @class */ (function () {\n function XhtmlValidation(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n XhtmlValidation.prototype.addEventListener = function () {\n this.parent.on(events.xhtmlValidation, this.enableXhtmlValidation, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n XhtmlValidation.prototype.removeEventListener = function () {\n this.parent.off(events.xhtmlValidation, this.enableXhtmlValidation);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n XhtmlValidation.prototype.enableXhtmlValidation = function () {\n if (this.parent.enableXhtml) {\n if (isNullOrUndefined(this.parent.inputElement)) {\n this.currentElement = this.parent.element;\n }\n else {\n this.currentElement = this.parent.inputElement;\n }\n this.clean(this.currentElement);\n this.AddRootElement();\n this.ImageTags();\n this.removeTags();\n this.RemoveUnsupported();\n this.currentElement.innerHTML = this.selfEncloseValidation(this.currentElement.innerHTML, this.currentElement.innerText === \"\\n\" ? this.currentElement.innerText.length : this.currentElement.innerText.trim().length);\n this.parent.setProperties({ value: this.currentElement.innerHTML }, true);\n }\n };\n /**\n * @param {string} currentValue - specifies the string value.\n * @returns {void}\n\n */\n XhtmlValidation.prototype.selfEncloseValidation = function (currentValue, valueLength) {\n if (valueLength === 0 && currentValue.indexOf('table') < 0 && currentValue.indexOf('img') < 0) {\n var arrayValue = currentValue.split(' ');\n arrayValue[arrayValue.length - 1] = \"​\" + arrayValue[arrayValue.length - 1];\n currentValue = arrayValue.join('');\n }\n currentValue = currentValue.replace(/
    /g, '
    ').replace(/
    /g, '
    ').replace(/ /gi, ' ').replace(/ /g, ' ');\n var valueTemp;\n var valueDupe = [];\n var valueOriginal = [];\n var imgRegexp = [//gi, //gi, //gi, //gi, //gi,\n //gi, //gi, //gi, //gi, //gi,\n //gi, //gi];\n for (var j = 0; j < imgRegexp.length; j++) {\n valueTemp = imgRegexp[j].exec(currentValue);\n while ((valueTemp) !== null) {\n valueDupe.push(valueTemp[0].toString());\n valueTemp = imgRegexp[j].exec(currentValue);\n }\n valueOriginal = valueDupe.slice(0);\n for (var i = 0; i < valueDupe.length; i++) {\n if (valueDupe[i].indexOf('/') === -1 || valueDupe[i].lastIndexOf('/') !== valueDupe[i].length - 2) {\n valueDupe[i] = valueDupe[i].substr(0, valueDupe[i].length - 1) + ' /' +\n valueDupe[i].substr(valueDupe[i].length - 1, valueDupe[i].length);\n }\n }\n for (var g = 0; g <= valueDupe.length - 1; g++) {\n currentValue = currentValue.replace(valueOriginal[g], valueDupe[g]);\n }\n }\n return currentValue;\n };\n XhtmlValidation.prototype.AddRootElement = function () {\n if ((this.currentElement.childNodes.length === 1 && this.currentElement.firstChild.nodeName !== 'DIV') ||\n this.currentElement.childNodes.length > 1) {\n var parentEle = this.parent.createElement('div');\n while (this.currentElement.childNodes.length > 0) {\n parentEle.appendChild(this.currentElement.childNodes[0]);\n }\n this.currentElement.appendChild(parentEle);\n }\n };\n XhtmlValidation.prototype.clean = function (node) {\n for (var n = 0; n < node.childNodes.length; n++) {\n var child = node.childNodes[n];\n if (child.nodeType === 8 || child.nodeName === 'V:IMAGE') {\n node.removeChild(child);\n n--;\n }\n else if (child.nodeType === 1) {\n this.clean(child);\n }\n }\n return this.currentElement.innerHTML;\n };\n XhtmlValidation.prototype.ImageTags = function () {\n var imgNodes = this.currentElement.querySelectorAll('IMG');\n for (var i = imgNodes.length - 1; i >= 0; i--) {\n if (!imgNodes[i].hasAttribute('alt')) {\n var img = imgNodes[i];\n img.setAttribute('alt', '');\n }\n }\n };\n XhtmlValidation.prototype.removeTags = function () {\n var removeAttribute = [['br', 'ul'], ['br', 'ol'], ['table', 'span'], ['div', 'span'], ['p', 'span']];\n for (var i = 0; i < removeAttribute.length; i++) {\n this.RemoveElementNode(removeAttribute[i][0], removeAttribute[i][1]);\n }\n };\n XhtmlValidation.prototype.RemoveElementNode = function (rmvNode, parentNode) {\n var parentArray = this.currentElement.querySelectorAll(parentNode);\n for (var i = 0; i < parentArray.length; i++) {\n var rmvArray = parentArray[i].querySelectorAll(rmvNode);\n for (var j = rmvArray.length; j > 0; j--) {\n detach(rmvArray[j - 1]);\n }\n }\n };\n XhtmlValidation.prototype.RemoveUnsupported = function () {\n var underlineEle = this.currentElement.querySelectorAll('u');\n for (var i = underlineEle.length - 1; i >= 0; i--) {\n var spanEle = this.parent.createElement('span');\n spanEle.style.textDecoration = 'underline';\n spanEle.innerHTML = underlineEle[i].innerHTML;\n underlineEle[i].parentNode.insertBefore(spanEle, underlineEle[i]);\n detach(underlineEle[i]);\n }\n var strongEle = this.currentElement.querySelectorAll('strong');\n for (var i = strongEle.length - 1; i >= 0; i--) {\n var boldEle = this.parent.createElement('b');\n boldEle.innerHTML = strongEle[i].innerHTML;\n strongEle[i].parentNode.insertBefore(boldEle, strongEle[i]);\n detach(strongEle[i]);\n }\n var attrArray = ['language', 'role', 'target', 'contenteditable', 'cellspacing',\n 'cellpadding', 'border', 'valign', 'colspan'];\n for (var i = 0; i <= attrArray.length; i++) {\n this.RemoveAttributeByName(attrArray[i]);\n }\n };\n XhtmlValidation.prototype.RemoveAttributeByName = function (attrName) {\n if (this.currentElement.firstChild !== null) {\n if (this.currentElement.firstChild.nodeType !== 3) {\n for (var i = 0; i < this.currentElement.childNodes.length; i++) {\n var ele = this.currentElement.childNodes[i];\n if (ele.nodeType !== 3 && ele.nodeName !== 'TABLE' && ele.nodeName !== 'TBODY' && ele.nodeName !== 'THEAD' &&\n ele.nodeName !== 'TH' && ele.nodeName !== 'TR' && ele.nodeName !== 'TD') {\n if (ele.hasAttribute(attrName)) {\n ele.removeAttribute(attrName);\n }\n if (ele.hasChildNodes()) {\n for (var j = 0; j < ele.childNodes.length; j++) {\n var childEle = ele.childNodes[j];\n if (childEle.nodeType !== 3 && childEle.nodeName !== 'TABLE' && childEle.nodeName !== 'TBODY' &&\n childEle.nodeName !== 'THEAD' && childEle.nodeName !== 'TH' && childEle.nodeName !== 'TR' &&\n childEle.nodeName !== 'TD' && childEle.hasAttribute(attrName)) {\n childEle.removeAttribute(attrName);\n }\n if (childEle.hasChildNodes()) {\n for (var k = 0; k < childEle.childNodes.length; k++) {\n if (childEle.childNodes[k].nodeType !== 3 && childEle.childNodes[k].nodeName !== 'TABLE' &&\n childEle.childNodes[k].nodeName !== 'TBODY' && childEle.childNodes[k].nodeName !== 'THEAD' &&\n childEle.childNodes[k].nodeName !== 'TH' && childEle.childNodes[k].nodeName !== 'TR'\n && childEle.childNodes[k].nodeName !== 'TD'\n && childEle.childNodes[k].hasAttribute(attrName)) {\n childEle.childNodes[k].removeAttribute(attrName);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n return XhtmlValidation;\n}());\nexport { XhtmlValidation };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach } from '@syncfusion/ej2-base';\nimport { HTMLFormatter } from '../formatter/html-formatter';\nimport { RenderType } from '../base/enum';\nimport * as classes from '../base/classes';\nimport { HtmlToolbarStatus } from './html-toolbar-status';\nimport { IframeContentRender } from '../renderer/iframe-content-renderer';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { ColorPickerInput } from './color-picker';\nimport { NodeSelection } from '../../selection/selection';\nimport { InsertHtml } from '../../editor-manager/plugin/inserthtml';\nimport { getTextNodesUnder, sanitizeHelper } from '../base/util';\nimport { isIDevice } from '../../common/util';\nimport { XhtmlValidation } from './xhtml-validation';\nimport { ON_BEGIN } from './../../common/constant';\n/**\n * `HtmlEditor` module is used to HTML editor\n */\nvar HtmlEditor = /** @class */ (function () {\n function HtmlEditor(parent, serviceLocator) {\n this.rangeCollection = [];\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.xhtmlValidation = new XhtmlValidation(parent);\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n HtmlEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nodeSelectionObj = new NodeSelection();\n this.colorPickerModule = new ColorPickerInput(this.parent, this.locator);\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.htmlToolbarClick, this.onToolbarClick, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.renderColorPicker, this.renderColorPicker, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.selectAll, this.selectAll, this);\n this.parent.on(events.selectRange, this.selectRange, this);\n this.parent.on(events.getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(events.selectionSave, this.onSelectionSave, this);\n this.parent.on(events.selectionRestore, this.onSelectionRestore, this);\n this.parent.on(events.readOnlyMode, this.updateReadOnly, this);\n this.parent.on(events.paste, this.onPaste, this);\n };\n HtmlEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'false' });\n addClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n else {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'true' });\n removeClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n };\n HtmlEditor.prototype.onSelectionSave = function () {\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n };\n HtmlEditor.prototype.onSelectionRestore = function (e) {\n this.parent.isBlur = false;\n this.contentRenderer.getEditPanel().focus();\n if (isNullOrUndefined(e.items) || e.items) {\n this.saveSelection.restore();\n }\n };\n HtmlEditor.prototype.onKeyDown = function (e) {\n var _this = this;\n var currentRange;\n if (Browser.info.name === 'chrome') {\n currentRange = this.parent.getRange();\n this.backSpaceCleanup(e, currentRange);\n this.deleteCleanup(e, currentRange);\n }\n if (e.args.keyCode === 9 && this.parent.enableTabKey) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var parentNode = this.nodeSelectionObj.getParentNodeCollection(range);\n if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||\n closest(parentNode[0], 'table')) && range.startOffset === 0)) {\n e.args.preventDefault();\n if (!e.args.shiftKey) {\n InsertHtml.Insert(this.contentRenderer.getDocument(), '    ');\n this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));\n }\n else if (this.rangeCollection.length > 0 &&\n this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {\n var textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;\n this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);\n InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));\n this.rangeCollection.pop();\n }\n }\n }\n if (e.args.action === 'space' ||\n e.args.action === 'enter') {\n this.spaceLink(e.args);\n }\n if (e.args.action === 'space') {\n var currentRange_1 = this.parent.getRange();\n var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);\n var orderedList_1 = this.isOrderedList(editorValue);\n var unOrderedList = this.isUnOrderedList(editorValue);\n if (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1) {\n var eventArgs_1 = {\n callBack: null,\n event: e.args,\n name: 'keydown-handler'\n };\n var actionBeginArgs = {\n cancel: false,\n item: { command: 'Lists', subCommand: orderedList_1 ? 'OL' : 'UL' },\n name: 'actionBegin',\n originalEvent: e.args,\n requestType: orderedList_1 ? 'OL' : 'UL'\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n _this.parent.formatter.editorManager.observer.notify(ON_BEGIN, eventArgs_1);\n _this.parent.trigger(events.actionComplete, {\n editorMode: _this.parent.editorMode,\n elements: _this.parent.formatter.editorManager.domNode.blockNodes(),\n event: e.args,\n name: events.actionComplete,\n range: _this.parent.getRange(),\n requestType: orderedList_1 ? 'OL' : 'UL'\n });\n }\n });\n }\n }\n if (Browser.info.name === 'chrome' && (!isNullOrUndefined(this.rangeElement) && !isNullOrUndefined(this.oldRangeElement) ||\n !isNullOrUndefined(this.deleteRangeElement) && !isNullOrUndefined(this.deleteOldRangeElement)) &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = null;\n this.oldRangeElement = null;\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n e.args.preventDefault();\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.isUnOrderedList = function (editorValue) {\n var ulListStartRegex = [/^[*]$/, /^[-]$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < ulListStartRegex.length; i++) {\n if (ulListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {\n var isLiElement = false;\n if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&\n currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.rangeElement.tagName === 'OL' || this.rangeElement.tagName === 'UL') {\n var liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {\n this.oldRangeElement = liElement.previousElementSibling.lastElementChild;\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.rangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.rangeElement = liElement;\n }\n }\n }\n else if (this.rangeElement.tagName === 'TABLE' || (!isNullOrUndefined(this.rangeElement.previousElementSibling) &&\n this.rangeElement.previousElementSibling.tagName === 'TABLE')) {\n return;\n }\n else {\n this.oldRangeElement = this.rangeElement.previousElementSibling;\n }\n if (isNullOrUndefined(this.oldRangeElement)) {\n return;\n }\n else {\n if (this.oldRangeElement.tagName === 'OL' || this.oldRangeElement.tagName === 'UL') {\n this.oldRangeElement = this.oldRangeElement.lastElementChild.lastElementChild\n ? this.oldRangeElement.lastElementChild.lastElementChild :\n this.oldRangeElement.lastElementChild;\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n this.oldRangeElement, this.oldRangeElement.childNodes.length);\n if (this.oldRangeElement.querySelector('BR')) {\n detach(this.oldRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {\n while (this.rangeElement.firstChild) {\n this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);\n }\n // eslint-disable-next-line\n !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);\n this.oldRangeElement.normalize();\n }\n }\n }\n };\n HtmlEditor.prototype.deleteCleanup = function (e, currentRange) {\n var isLiElement = false;\n var liElement;\n var rootElement;\n if (e.args.code === 'Delete' && e.args.keyCode === 46 &&\n this.parent.contentModule.getText().trim().length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&\n currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {\n liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.nextElementSibling && liElement.nextElementSibling.childElementCount > 0\n && !liElement.nextElementSibling.querySelector('BR')) {\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.deleteRangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.deleteRangeElement = liElement;\n }\n }\n else {\n this.deleteRangeElement = this.getRangeElement(liElement);\n }\n }\n else if (this.deleteRangeElement.nodeType === 3 || (this.deleteRangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {\n return;\n }\n if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length) {\n if (!isNullOrUndefined(liElement)) {\n if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {\n this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);\n }\n else {\n this.deleteOldRangeElement = rootElement.nextElementSibling;\n }\n }\n else {\n this.deleteOldRangeElement = this.deleteRangeElement.nextElementSibling;\n }\n if (isNullOrUndefined(this.deleteOldRangeElement)) {\n return;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n if (this.deleteRangeElement.querySelector('BR')) {\n detach(this.deleteRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')\n && this.deleteOldRangeElement !== this.deleteRangeElement) {\n while (this.deleteOldRangeElement.firstChild) {\n this.deleteRangeElement.appendChild(this.deleteOldRangeElement.childNodes[0]);\n }\n !isLiElement ? detach(this.deleteOldRangeElement) : detach(this.deleteOldRangeElement.parentElement);\n this.deleteRangeElement.normalize();\n }\n else {\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n }\n }\n }\n else {\n this.deleteRangeElement = null;\n }\n }\n };\n HtmlEditor.prototype.getCaretIndex = function (currentRange, element) {\n var position = 0;\n if (this.parent.contentModule.getDocument().getSelection().rangeCount !== 0) {\n var preCaretRange = currentRange.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(currentRange.endContainer, currentRange.endOffset);\n position = preCaretRange.toString().length;\n }\n return position;\n };\n HtmlEditor.prototype.getRangeElement = function (element) {\n var rangeElement = element.lastElementChild ? element.lastElementChild.tagName === 'BR' ?\n element.lastElementChild.previousElementSibling ? element.lastElementChild.previousElementSibling\n : element : element.lastElementChild : element;\n return rangeElement;\n };\n HtmlEditor.prototype.getRootBlockNode = function (rangeBlockNode) {\n // eslint-disable-next-line\n for (; rangeBlockNode && this.parent && this.parent.inputElement !== rangeBlockNode; rangeBlockNode = rangeBlockNode) {\n if (rangeBlockNode.parentElement === this.parent.inputElement) {\n break;\n }\n else {\n rangeBlockNode = rangeBlockNode.parentElement;\n }\n }\n return rangeBlockNode;\n };\n HtmlEditor.prototype.getRangeLiNode = function (rangeLiNode) {\n var node = rangeLiNode.parentElement;\n while (node !== this.parent.inputElement) {\n if (node.nodeType === 1 && node.tagName === 'LI') {\n break;\n }\n node = node.parentElement;\n }\n return node;\n };\n HtmlEditor.prototype.onPaste = function (e) {\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (e.text.match(regex)) {\n if (e.isWordPaste) {\n return;\n }\n e.args.preventDefault();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var saveSelection = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var httpRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)))/gi);\n var wwwRegex = new RegExp(/([^\\S]|^)(((www\\.))(\\S+))/gi);\n var enterSplitText = e.text.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += '


    ';\n }\n else {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText[i].split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n if (i === 0) {\n contentInnerElem += '' + contentWithSpace.trim() + '';\n }\n else {\n contentInnerElem += '

    ' + contentWithSpace.trim() + '

    ';\n }\n }\n }\n var divElement = this.parent.createElement('div');\n divElement.setAttribute('class', 'pasteContent');\n divElement.style.display = 'inline';\n divElement.innerHTML = contentInnerElem;\n var paraElem = divElement.querySelectorAll('span, p');\n for (var i = 0; i < paraElem.length; i++) {\n var splitTextContent = paraElem[i].innerHTML.split(' ');\n var resultSplitContent = '';\n for (var j = 0; j < splitTextContent.length; j++) {\n if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {\n resultSplitContent += '' + splitTextContent[j] + ' ';\n }\n else {\n resultSplitContent += splitTextContent[j] + ' ';\n }\n }\n paraElem[i].innerHTML = resultSplitContent.trim();\n }\n if (!isNullOrUndefined(this.parent.pasteCleanupModule)) {\n e.callBack(divElement.innerHTML);\n }\n else {\n this.parent.formatter.editorManager.execCommand('insertHTML', null, null, null, divElement);\n }\n }\n };\n HtmlEditor.prototype.spaceLink = function (e) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var selectNodeEle = this.nodeSelectionObj.getParentNodeCollection(range);\n var text = range.startContainer.textContent.substr(0, range.endOffset);\n var splitText = text.split(' ');\n var urlText = splitText[splitText.length - 1];\n var urlTextRange = range.startOffset - (text.length - splitText[splitText.length - 1].length);\n urlText = urlText.slice(0, urlTextRange);\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {\n var selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n var url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;\n var selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var value = {\n url: url,\n selection: selection, selectParent: selectParent,\n text: urlText,\n title: '',\n target: '_blank'\n };\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n }\n }, e, value);\n }\n };\n HtmlEditor.prototype.onToolbarClick = function (args) {\n var save;\n var selectNodeEle;\n var selectParentEle;\n var item = args.item;\n var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');\n if (closestElement && !closestElement.classList.contains('e-rte-inline-popup')) {\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n if (isIDevice() && item.command === 'Images') {\n this.nodeSelectionObj.restore();\n }\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n if (item.command === 'Images') {\n this.parent.notify(events.imageToolbarAction, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Links') {\n this.parent.notify(events.linkToolbarAction, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Table') {\n this.parent.notify(events.tableToolbarAction, {\n member: 'table', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n }\n else {\n var linkDialog = document.getElementById(this.parent.getID() + '_rtelink');\n var imageDialog = document.getElementById(this.parent.getID() + '_image');\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n if (isNullOrUndefined(linkDialog) && isNullOrUndefined(imageDialog)) {\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n }\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(events.enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(events.disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(events.insertLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Print':\n this.parent.print();\n break;\n case 'Image':\n this.parent.notify(events.insertImage, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'CreateTable':\n this.parent.notify(events.createTable, {\n member: 'table', args: args, selection: save\n });\n break;\n case 'SourceCode':\n this.parent.notify(events.sourceCode, { member: 'viewSource', args: args });\n break;\n case 'Preview':\n this.parent.notify(events.updateSource, { member: 'updateSource', args: args });\n break;\n case 'FontColor':\n case 'BackgroundColor':\n break;\n case 'File':\n this.parent.notify(events.renderFileManager, {\n member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n }\n };\n HtmlEditor.prototype.renderColorPicker = function (args) {\n this.colorPickerModule.renderColorPickerInput(args);\n };\n HtmlEditor.prototype.instantiateRenderer = function () {\n if (this.parent.iframeSettings.enable) {\n this.renderFactory.addRenderer(RenderType.Content, new IframeContentRender(this.parent, this.locator));\n }\n else {\n this.renderFactory.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n }\n };\n HtmlEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.htmlToolbarClick, this.onToolbarClick);\n this.parent.off(events.renderColorPicker, this.renderColorPicker);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.selectAll, this.selectAll);\n this.parent.off(events.selectRange, this.selectRange);\n this.parent.off(events.getSelectedHtml, this.getSelectedHtml);\n this.parent.off(events.selectionSave, this.onSelectionSave);\n this.parent.off(events.selectionRestore, this.onSelectionRestore);\n this.parent.off(events.readOnlyMode, this.updateReadOnly);\n this.parent.off(events.paste, this.onPaste);\n };\n HtmlEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n var formatterClass = new HTMLFormatter({\n currentDocument: this.contentRenderer.getDocument(),\n element: editElement,\n options: option\n });\n this.parent.setProperties({ formatter: formatterClass }, true);\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.enableXhtml) {\n this.parent.notify(events.xhtmlValidation, {});\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new HtmlToolbarStatus(this.parent);\n }\n if (this.parent.inlineMode.enable) {\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n editElement.style.fontFamily = this.parent.fontFamily.default;\n }\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n editElement.style.fontSize = this.parent.fontSize.default;\n }\n }\n this.parent.notify(events.bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n HtmlEditor.prototype.getModuleName = function () {\n return 'htmlEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectAll = function () {\n var nodes = getTextNodesUnder(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel());\n if (nodes.length > 0) {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), nodes[0], nodes[nodes.length - 1], 0, nodes[nodes.length - 1].textContent.length);\n }\n };\n /**\n * For selecting all content in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectRange = function (e) {\n this.parent.formatter.editorManager.nodeSelection.setRange(this.parent.contentModule.getDocument(), e.range);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @hidden\n */\n HtmlEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());\n };\n return HtmlEditor;\n}());\nexport { HtmlEditor };\n","import { isNullOrUndefined, addClass, extend, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, alignFrozenEditForm, getMovableTbody, getFrozenRightTbody, setStyleAndAttributes } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n var isFrozenGrid = this.parent.isFrozenGrid();\n var isVirtualFrozen = isFrozenGrid && this.parent.enableColumnVirtualization && args.isScroll;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = isVirtualFrozen ? this.parent.getMovableHeaderTbody() : this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = isVirtualFrozen ? this.parent.getMovableContentTbody() : this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (isFrozenGrid && !isVirtualFrozen) {\n var moveTbody = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (isFrozenGrid && !isVirtualFrozen) {\n var mEle = this.renderMovableform(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mEle, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mEle);\n }\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frEle, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frEle);\n }\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(events.frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n td = td.concat([].slice.call(this.getFreezeRightRow(row).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row) {\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row) || frHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n return row;\n };\n InlineEditRender.prototype.getFreezeRow = function (row) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row) || mHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var isCustomFormValidation = args.isCustomFormValidation;\n var isScroll = args.isScroll;\n if (!isScroll && (closest(args.row, '.' + literals.movableContent) || closest(args.row, '.' + literals.movableHeader))) {\n args.row = this.getFreezeRow(args.row);\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n var isVirtualFrozen = this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization && isScroll;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n if (!isVirtualFrozen && !isCustomFormValidation) {\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n }\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n if (!isVirtualFrozen && !isCustomFormValidation) {\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row, args) {\n var td = row.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent().querySelector('.' + literals.frozenHeader).\n querySelector(literals.colGroup).innerHTML;\n }\n var fCls;\n var cont;\n var idx = parseInt(row.getAttribute(literals.ariaRowIndex), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.' + literals.frozenHeader;\n }\n else {\n cont = this.parent.getContent();\n fCls = '.' + literals.frozenContent;\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n fRows.appendChild(mTd);\n fRows.classList.add(literals.editedRow);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frRows.appendChild(frTd);\n frRows.classList.add(literals.editedRow);\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row, ele, frEle) {\n row.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row, ele, mEle) {\n row.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector(literals.colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === literals.frozenRight) {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[index]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[k]));\n k--;\n }\n }\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - gObj.getVisibleFrozenColumns()\n + this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody);\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[m].getAttribute('colspan') : null;\n var col = cols[i];\n if ((isVirtualFrozen && col.getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n i++;\n continue;\n }\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].validationRules) {\n _this.parent.editModule.formObj.rules[cols[i].field] =\n cols[i].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.remove('e-ellipsistooltip');\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = this.getDialogEditTemplateElement('HeaderTemplate', args);\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n this.dialog.setAttribute('aria-label', 'Dialog edit');\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true, cssClass: 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'), cssClass: 'e-primary', isPrimary: true }\n },\n { click: this.btnClick.bind(this), buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[i]]) {\n var templateName = dialogEditTemplates[i].charAt(0).toUpperCase() + dialogEditTemplates[i].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n if (isReactCompiler) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].validationRules) {\n _this.parent.editModule.formObj.rules[columns[i].field] =\n columns[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px' } });\n var tbody = this.parent.createElement(literals.tbody);\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[i]) || cols[i].commands || cols[i].commandsTemplate ||\n cols[i].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr');\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[i].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[i].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[index];\n var isVirtualFrozen = frzCols && this.parent.enableColumnVirtualization && args.isScroll;\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute(literals.ariaRowIndex), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.' + literals.movableHeader).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.' + literals.movableContent).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (isVirtualFrozen && col.getFreezeTableName() !== 'movable') {\n continue;\n }\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === literals.frozenRight && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[i];\n if (this.parent.editModule.checkColumnIsGrouped(col) || (isVirtualFrozen && cols[i].getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[i], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.ariaRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n if (isReactCompiler) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[i]] = keys[i] === 'query' ? args.column.edit.params[keys[i]].clone() : args.column.edit.params[keys[i]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending'\n }, params));\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = [args.rowData];\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals.open, this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals.open, this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource);\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText\n }, col.edit.params));\n this.obj.appendTo(args.element);\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.ariaRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[i], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[aria-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (!this.previousData && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[index],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n gObj.refresh();\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[index];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[aria-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[i].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n row.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[i]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(events.getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll && cols[i].getFreezeTableName() !== 'movable') {\n continue;\n }\n if (cols[i].field) {\n DataUtil.setValue(cols[i].field, cols[i].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n gObj.trigger(events.actionComplete, addArgs);\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_1 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[i] === getObject(fieldname, record) || data[i] === record;\n });\n data[i] = contained ? tmpRecord : data[i][fieldname] ? data[i] : (_a = {}, _a[fieldname] = data[i], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_1(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[i]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[i].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, inArray, refreshForeignData, getObject, alignFrozenEditForm, gridActionHandler, addRemoveEventListener } from '../base/util';\nimport { splitFrozenRowObjectCells, getGridRowElements } from '../base/util';\nimport { sliceElements, getCellByColAndRowIndex, getMovableTbody, getFrozenRightTbody } from '../base/util';\nimport { getGridRowObjects } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.closeBatch, handler: this.closeForm },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.ariaRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.ariaColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow)) {\n this.editCell(rowIndex, this.parent.getColumns()[colIndex].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (!e.byKey || clear) {\n if (this.parent.isEdit && clear) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[e.indexes[1]];\n if (col && !this.parent.isEdit) {\n this.editCell(e.indexes[0], col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[index].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[cellIdx].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[i].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[i], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.getElementsByClassName('e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[i]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[i] === Object.keys(this.cloneCell)[j]) {\n this.cloneCell[Object.keys(this.cloneCell)[j]].replaceWith(this.originalCell[Object.keys(this.originalCell)[i]]);\n if (this.originalCell[Object.keys(this.originalCell)[i]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[i]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[i].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @param {Row} row - specifies the row object\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row.clone();\n rowClone.cells = splitFrozenRowObjectCells(gObj, rowClone.cells, tableName);\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[index] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[index] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.ariaRowIndex), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === literals.leftRight) {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[i]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[i];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[i]);\n }\n else {\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[i];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute(literals.ariaRowIndex), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[i].classList.contains(literals.row) && !rows[i].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].setAttribute(literals.ariaRowIndex, j.toString());\n rowObjects[i].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].removeAttribute(literals.ariaRowIndex);\n rowObjects[i].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var mTr;\n var frTr;\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.isFrozenGrid()) {\n frTr = tr.cloneNode(true);\n mTr = _this.renderMovable(tr, frTr);\n tr = gObj.getFrozenMode() === 'Right' ? frTr : tr;\n _this.renderFrozenAddRow(tr, mTr, frTr);\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[index];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: tr.cells[index]\n };\n gObj.trigger(events.batchAdd, args1);\n if (gObj.isFrozenGrid()) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (tr, mTr, frTr) {\n var gObj = this.parent;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n if (gObj.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mTr, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mTr);\n }\n addClass([].slice.call(mTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n if (frTbody && frTr) {\n if (gObj.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frTr, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frTr);\n }\n addClass([].slice.call(frTr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(events.frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[i].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[i])) {\n return i;\n }\n else if (isAdd && !cols[i].template && cols[i].visible && cols[i].allowEditing &&\n !(cols[i].isIdentity && cols[i].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && col.allowEditing) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === literals.frozenRight) {\n row = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[index] : gObj.getFrozenRightDataRows()[index];\n mRowData = this.parent.getRowObjectFromUID(row.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row = gObj.getDataRows()[index];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity)) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.ariaColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[rowIndex] :\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject()[rowIndex]\n : gObj.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td, column: col, data: rowObj.changes\n });\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute(literals.ariaRowIndex), 10);\n currentRowObj = this.parent.getRowsObject()[rowIndex];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = this.parent.getMovableRowsObject()[rowIndex];\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frRowObject = this.parent.getFrozenRightRowsObject()[rowIndex];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === literals.frozenRight\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[cellIndex];\n parentElement.cells[cellIndex].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute(literals.ariaColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n if (this.isAdded && !gObj.isEdit) {\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[index];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = parentsUntil(cellSaveArgs.cell, literals.movableContent)\n || parentsUntil(cellSaveArgs.cell, literals.movableHeader) ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === literals.leftRight && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && col.allowEditing) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[index].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (rowcell) {\n var cell = rowcell.querySelector('.e-field');\n if (cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (visibleColumns[columnIndex].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element)\n };\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, getColumnModelByFieldName } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[i].editTemplate) {\n var templteCell = 'templateedit';\n cols[i].edit = extend(new Edit.editCellType[templteCell](this.parent), cols[i].edit || {});\n }\n else {\n cols[i].edit = extend(new Edit.editCellType[cols[i].editType && Edit.editCellType[cols[i].editType] ?\n cols[i].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[i].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
    ' + this.l10n.getConstant(content) + '
    ';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-primary', isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this), buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-flat', isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' }\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[k].hasAttribute('name') && (elements[k].className !== 'e-multi-hidden')) ||\n elements[k].classList.contains('e-multiselect')) && !(elements[k].type === 'hidden' &&\n (parentsUntil(elements[k], 'e-switch-wrapper') || parentsUntil(elements[k], 'e-checkbox-wrapper')))) {\n var field = (elements[k].hasAttribute('name')) ? setComplexFieldID(elements[k].getAttribute('name')) :\n setComplexFieldID(elements[k].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[k].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[k].checked;\n }\n else if (elements[k].value) {\n value = elements[k].value;\n if (elements[k].ej2_instances &&\n elements[k].ej2_instances.length &&\n !isNullOrUndefined(elements[k].ej2_instances[0].value)) {\n elements[k].blur();\n value = elements[k].ej2_instances[0].value;\n }\n }\n else if (elements[k].ej2_instances) {\n value = elements[k].ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[k], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[k], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[k].type === 'radio') {\n if (elements[k].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[j].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[j].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[j].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[j], temp[k], editedData);\n DataUtil.setValue(col[j].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[i].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[i], editedData);\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.ariaRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[i].hasAttribute('name')) {\n if (elements[i].ej2_instances &&\n elements[i].ej2_instances.length &&\n !elements[i].ej2_instances[0].isDestroyed) {\n elements[i].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[i] && formObjects[i].element && !formObjects[i].isDestroyed) {\n formObjects[i].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.closeEdit();\n }\n }\n break;\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[idx] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.getElementsByClassName('e-gridform')[index];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[i].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[i].validationRules) {\n setValidationRuels(cols[i], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frForm = gObj.element.getElementsByClassName('e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n this.parent.editModule.formObj = this.createFormObj(form, rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.ariaRowIndex), 10) || 0));\n var field = inputElement.name;\n var col = void 0;\n if (field) {\n col = getColumnModelByFieldName(this.parent, setComplexFieldID(field));\n }\n if (col && gObj.isFrozenGrid()) {\n if (col.getFreezeTableName() === 'frozen-left') {\n table = isFHdr ? gObj.getFrozenVirtualHeader().querySelector('table')\n : gObj.getFrozenVirtualContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n table = isFHdr ? gObj.getFrozenRightHeader().querySelector('table')\n : gObj.getFrozenRightContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'movable') {\n table = isFHdr ? gObj.getMovableVirtualHeader().querySelector('table')\n : gObj.getMovableVirtualContent().querySelector('table');\n }\n }\n else {\n table = isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === literals.leftRight && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === literals.frozenRight ? this.frFormObj.element : this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var fCont = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().getElementsByClassName(literals.row))\n : [].slice.call(this.parent.getFrozenVirtualContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.ariaRowIndex) === row.getAttribute(literals.ariaRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector(literals.tbody).children\n : this.parent.getHeaderTable().querySelector(literals.tbody).children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute(literals.ariaRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.ariaRowIndex), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n div.style.bottom = (this.parent.height - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","import { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IRichTextEditor} parent - specifies the parent\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function Render(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize Rich Text Editor header, content and footer rendering\n *\n * @returns {void}\n * @hidden\n\n */\n Render.prototype.render = function () {\n // eslint-disable-next-line\n var rteObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.contentRenderer.renderPanel();\n };\n /**\n * Refresh the entire RichTextEditor.\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n if (e === void 0) { e = { requestType: 'refresh' }; }\n this.parent.notify(e.requestType + \"-begin\", e);\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n */\n Render.prototype.destroy = function () {\n this.removeEventListener();\n };\n Render.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.keyUp, this.keyUp, this);\n };\n Render.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.modelChanged, this.refresh);\n this.parent.off(events.keyUp, this.keyUp);\n };\n Render.prototype.keyUp = function (e) {\n if (this.parent.editorMode === 'HTML') {\n switch (e.args.which) {\n case 46:\n case 8:\n // eslint-disable-next-line\n var childNodes = this.parent.contentModule.getEditPanel().childNodes;\n if ((childNodes.length === 0) ||\n (childNodes.length === 1 && childNodes[0].childNodes.length === 0 && ((childNodes[0].tagName === 'BR') ||\n (childNodes[0].tagName === 'P' && childNodes[0].textContent === '')))) {\n var node = this.parent.contentModule.getEditPanel();\n node.innerHTML = '


    ';\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), node.childNodes[0], 0);\n }\n break;\n }\n }\n };\n return Render;\n}());\nexport { Render };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 '@syncfusion/ej2-base';\nimport { Base } from '@syncfusion/ej2-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 ']': 221,\n '[': 219,\n '=': 187\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 *\n * @hidden\n\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element - specifies the elements.\n * @param {KeyboardEventsModel} options - specify the 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 * @param {KeyboardEventArgs} e - specifies the event arguments.\n * @returns {void}\n */\n _this.keyPressHandler = function (e) {\n /* eslint-disable */\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var isMetaKey = e.metaKey;\n /* eslint-enable */\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 || isMetaKey) &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n }\n }\n }\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {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 *\n * @param {KeyboardEventsModel} newProp - specifies the keyboard event.\n * @param {KeyboardEventsModel} oldProp - specifies the old property.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} - specifies the key data\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 { removeClass, selectAll, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_EXPAND_OPEN, CLS_TB_ITEM, CLS_ACTIVE } from '../base/classes';\nimport * as CONSTANT from '../../common/constant';\nimport { RenderType } from '../base/enum';\nimport { KeyboardEvents } from '../actions/keyboard';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ViewSource = /** @class */ (function () {\n /**\n * Constructor for view source module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function ViewSource(parent, locator) {\n this.parent = parent;\n var serviceLocator = locator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.addEventListener();\n }\n ViewSource.prototype.addEventListener = function () {\n this.parent.on(events.sourceCode, this.sourceCode, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.updateSource, this.updateSourceCode, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n ViewSource.prototype.onInitialEnd = function () {\n this.parent.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ViewSource.prototype.removeEventListener = function () {\n this.unWireEvent();\n this.parent.off(events.sourceCode, this.sourceCode);\n this.parent.off(events.updateSource, this.updateSourceCode);\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown);\n };\n ViewSource.prototype.getSourceCode = function () {\n return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' });\n };\n ViewSource.prototype.wireEvent = function (element) {\n this.keyboardModule = new KeyboardEvents(element, {\n keyAction: this.previewKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n EventHandler.add(this.previewElement, 'mousedown', this.mouseDownHandler, this);\n };\n ViewSource.prototype.unWireEvent = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.previewElement) {\n EventHandler.remove(this.previewElement, 'mousedown', this.mouseDownHandler);\n }\n };\n ViewSource.prototype.wireBaseKeyDown = function () {\n this.parent.keyboardModule = new KeyboardEvents(this.contentModule.getEditPanel(), {\n keyAction: this.parent.keyDown.bind(this.parent), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n };\n ViewSource.prototype.unWireBaseKeyDown = function () {\n this.parent.keyboardModule.destroy();\n };\n ViewSource.prototype.mouseDownHandler = function (e) {\n this.parent.notify(events.sourceCodeMouseDown, { args: e });\n };\n ViewSource.prototype.previewKeyDown = function (event) {\n switch (event.action) {\n case 'html-source':\n this.updateSourceCode(event);\n event.preventDefault();\n break;\n case 'toolbar-focus':\n if (this.parent.toolbarSettings.enable) {\n var selector = '.e-toolbar-item[aria-disabled=\"false\"][title] [tabindex]';\n this.parent.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n }\n };\n ViewSource.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'html-source':\n e.event.preventDefault();\n this.sourceCode(e);\n e.callBack({\n requestType: 'SourceCode',\n editorMode: 'HTML',\n event: e.event\n });\n break;\n }\n };\n /**\n * sourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.sourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.parent.element);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n if (isNullOrUndefined(this.previewElement)) {\n this.previewElement = this.getSourceCode();\n }\n this.parent.updateValueData();\n if (this.parent.iframeSettings.enable) {\n var rteContent = void 0;\n if (isNullOrUndefined(this.parent.element.querySelector('#' + this.parent.element.id + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.element.id + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.element.id + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\n rteContent.style.marginTop = this.contentModule.getPanel().style.marginTop;\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getPanel().style.display = 'none';\n rteContent.style.display = 'block';\n this.getPanel().style.display = 'block';\n }\n else {\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getEditPanel().style.display = 'none';\n this.previewElement.style.display = 'block';\n }\n this.parent.isBlur = false;\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n this.parent.enableToolbarItem('SourceCode');\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n removeClass(tbItems, [CLS_ACTIVE]);\n this.parent.setContentHeight('sourceCode', true);\n this.wireEvent(this.previewElement);\n this.unWireBaseKeyDown();\n this.previewElement.focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && !this.parent.iframeSettings.enable) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'none';\n }\n this.parent.trigger(events.actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n };\n /**\n * updateSourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.updateSourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'Preview', targetItem: 'Preview', args: args });\n var editHTML = this.getPanel();\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'Preview', updateItem: 'SourceCode',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n var serializeValue = this.parent.serializeValue(editHTML.value);\n var value = (serializeValue === null || serializeValue === '') ? '


    ' : serializeValue;\n if (this.parent.iframeSettings.enable) {\n editHTML.parentElement.style.display = 'none';\n editHTML.style.display = 'none';\n this.contentModule.getPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n else {\n editHTML.style.display = 'none';\n this.contentModule.getEditPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n this.parent.isBlur = false;\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n this.parent.setContentHeight('preview', true);\n this.unWireEvent();\n this.wireBaseKeyDown();\n this.contentModule.getEditPanel().focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && this.contentModule.getEditPanel().innerText.length === 0) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'block';\n }\n this.parent.trigger(events.actionComplete, { requestType: 'Preview', targetItem: 'Preview', args: args });\n this.parent.formatter.enableUndo(this.parent);\n this.parent.invokeChangeEvent();\n };\n ViewSource.prototype.getTextAreaValue = function () {\n return (this.contentModule.getEditPanel().innerHTML === '


    ') ||\n (this.contentModule.getEditPanel().childNodes.length === 1 &&\n this.contentModule.getEditPanel().childNodes[0].tagName === 'P' &&\n this.contentModule.getEditPanel().innerHTML.length === 7) ? '' : this.parent.value;\n };\n /**\n * getPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getPanel = function () {\n return this.parent.element && this.parent.element.querySelector('.e-rte-srctextarea');\n };\n /**\n * getViewPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getViewPanel = function () {\n return (this.parent.iframeSettings.enable && this.getPanel()) ? this.getPanel().parentElement : this.getPanel();\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.destroy = function () {\n this.removeEventListener();\n };\n return ViewSource;\n}());\nexport { ViewSource };\n","/**\n * @hidden\n\n */\nexport var executeGroup = {\n 'bold': {\n command: 'Style',\n subCommand: 'Bold',\n value: 'strong'\n },\n 'italic': {\n command: 'Style',\n subCommand: 'Italic',\n value: 'em'\n },\n 'underline': {\n command: 'Style',\n subCommand: 'Underline',\n value: 'span'\n },\n 'strikeThrough': {\n command: 'Style',\n subCommand: 'StrikeThrough',\n value: 'span'\n },\n 'insertCode': {\n command: 'Formats',\n subCommand: 'Pre',\n value: 'pre'\n },\n 'superscript': {\n command: 'Effects',\n subCommand: 'SuperScript',\n value: 'sup'\n },\n 'subscript': {\n command: 'Effects',\n subCommand: 'SubScript',\n value: 'sub'\n },\n 'uppercase': {\n command: 'Casing',\n subCommand: 'UpperCase'\n },\n 'lowercase': {\n command: 'Casing',\n subCommand: 'LowerCase'\n },\n 'fontColor': {\n command: 'font',\n subCommand: 'fontcolor',\n value: '#ff0000'\n },\n 'fontName': {\n command: 'font',\n subCommand: 'fontname',\n value: 'Segoe UI'\n },\n 'fontSize': {\n command: 'font',\n subCommand: 'fontsize',\n value: '10pt'\n },\n 'backColor': {\n command: 'font',\n subCommand: 'backgroundcolor',\n value: '#ffff00'\n },\n 'justifyCenter': {\n command: 'Alignments',\n subCommand: 'JustifyCenter'\n },\n 'justifyFull': {\n command: 'Alignments',\n subCommand: 'JustifyFull'\n },\n 'justifyLeft': {\n command: 'Alignments',\n subCommand: 'JustifyLeft'\n },\n 'justifyRight': {\n command: 'Alignments',\n subCommand: 'JustifyRight'\n },\n 'undo': {\n command: 'Actions',\n subCommand: 'Undo'\n },\n 'redo': {\n command: 'Actions',\n subCommand: 'Redo'\n },\n 'createLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'editLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'createImage': {\n command: 'Images',\n subCommand: 'Images'\n },\n 'formatBlock': {\n command: 'Formats',\n value: 'P'\n },\n 'heading': {\n command: 'Formats',\n value: 'H1'\n },\n 'indent': {\n command: 'Indents',\n subCommand: 'Indent'\n },\n 'outdent': {\n command: 'Indents',\n subCommand: 'Outdent'\n },\n 'insertHTML': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: ''\n },\n 'insertText': {\n command: 'InsertText',\n subCommand: 'InsertText',\n value: ''\n },\n 'insertHorizontalRule': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
    '\n },\n 'insertImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'editImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertTable': {\n command: 'Table',\n subCommand: 'CreateTable'\n },\n 'insertBrOnReturn': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
    '\n },\n 'insertOrderedList': {\n command: 'Lists',\n value: 'OL'\n },\n 'insertUnorderedList': {\n command: 'Lists',\n value: 'UL'\n },\n 'insertParagraph': {\n command: 'Formats',\n value: 'P'\n },\n 'removeFormat': {\n command: 'Clear',\n subCommand: 'ClearFormat'\n }\n};\n","import * as events from '../base/constant';\n/**\n * `ExecCommandCallBack` module is used to run the editor manager command\n */\nvar ExecCommandCallBack = /** @class */ (function () {\n function ExecCommandCallBack(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ExecCommandCallBack.prototype.addEventListener = function () {\n this.parent.on(events.execCommandCallBack, this.commandCallBack, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ExecCommandCallBack.prototype.commandCallBack = function (args) {\n if (args.requestType !== 'Undo' && args.requestType !== 'Redo') {\n this.parent.formatter.saveData();\n }\n this.parent.notify(events.toolbarRefresh, { args: args });\n this.parent.notify(events.count, {});\n };\n ExecCommandCallBack.prototype.removeEventListener = function () {\n this.parent.off(events.execCommandCallBack, this.commandCallBack);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ExecCommandCallBack;\n}());\nexport { ExecCommandCallBack };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { AjaxSettings, ContextMenuSettings } from '@syncfusion/ej2-filemanager';\nimport { DetailsViewSettings, NavigationPaneSettings } from '@syncfusion/ej2-filemanager';\nimport { SearchSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarSettings as FileToolbarSettings } from '@syncfusion/ej2-filemanager';\nimport { UploadSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarType } from '../base/enum';\nimport { backgroundColor, fontColor, fontFamily, fontSize, formatItems, predefinedItems, TableStyleItems, numberFormatList, bulletFormatList } from './items';\n/**\n * Configures the toolbar settings of the RichTextEditor.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enableFloating\", void 0);\n __decorate([\n Property(ToolbarType.Expand)\n ], ToolbarSettings.prototype, \"type\", void 0);\n __decorate([\n Property(predefinedItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property({})\n ], ToolbarSettings.prototype, \"itemConfigs\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * Configures the image settings of the RichTextEditor.\n */\nvar ImageSettings = /** @class */ (function (_super) {\n __extends(ImageSettings, _super);\n function ImageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.jpeg', '.jpg', '.png'])\n ], ImageSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('inline')\n ], ImageSettings.prototype, \"display\", void 0);\n __decorate([\n Property('Blob')\n ], ImageSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], ImageSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], ImageSettings.prototype, \"resizeByPercent\", void 0);\n return ImageSettings;\n}(ChildProperty));\nexport { ImageSettings };\n/**\n * Configures the file manager settings of the RichTextEditor.\n */\nvar FileManagerSettings = /** @class */ (function (_super) {\n __extends(FileManagerSettings, _super);\n function FileManagerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ getImageUrl: null, url: null, uploadUrl: null }, AjaxSettings)\n ], FileManagerSettings.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Complex({ visible: true, file: ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Rename', '|', 'Details'], folder: ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', '|', 'Details'], layout: ['SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'] }, ContextMenuSettings)\n ], FileManagerSettings.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManagerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManagerSettings.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"enable\", void 0);\n __decorate([\n Complex({ maxWidth: '650px', minWidth: '240px', visible: true }, NavigationPaneSettings)\n ], FileManagerSettings.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManagerSettings.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManagerSettings.prototype, \"rootAliasName\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManagerSettings.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManagerSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({ visible: true, items: ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename', 'SortBy', 'Refresh', 'Selection', 'View', 'Details'] }, FileToolbarSettings)\n ], FileManagerSettings.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({ autoUpload: true, minFileSize: 0, maxFileSize: 30000000, allowedExtensions: '', autoClose: false }, UploadSettings)\n ], FileManagerSettings.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManagerSettings.prototype, \"view\", void 0);\n return FileManagerSettings;\n}(ChildProperty));\nexport { FileManagerSettings };\nvar TableSettings = /** @class */ (function (_super) {\n __extends(TableSettings, _super);\n function TableSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('100%')\n ], TableSettings.prototype, \"width\", void 0);\n __decorate([\n Property(TableStyleItems)\n ], TableSettings.prototype, \"styles\", void 0);\n __decorate([\n Property(true)\n ], TableSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(0)\n ], TableSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], TableSettings.prototype, \"maxWidth\", void 0);\n return TableSettings;\n}(ChildProperty));\nexport { TableSettings };\n/**\n * Configures the quick toolbar settings of the RichTextEditor.\n */\nvar QuickToolbarSettings = /** @class */ (function (_super) {\n __extends(QuickToolbarSettings, _super);\n function QuickToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], QuickToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], QuickToolbarSettings.prototype, \"showOnRightClick\", void 0);\n __decorate([\n Property('hide')\n ], QuickToolbarSettings.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(['Open', 'Edit', 'UnLink'])\n ], QuickToolbarSettings.prototype, \"link\", void 0);\n __decorate([\n Property(['Replace', 'Align', 'Caption', 'Remove', '-', 'InsertLink', 'OpenImageLink', 'EditImageLink', 'RemoveImageLink', 'Display', 'AltText', 'Dimension'])\n ], QuickToolbarSettings.prototype, \"image\", void 0);\n __decorate([\n Property(['Cut', 'Copy', 'Paste'])\n ], QuickToolbarSettings.prototype, \"text\", void 0);\n __decorate([\n Property(['TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'])\n ], QuickToolbarSettings.prototype, \"table\", void 0);\n return QuickToolbarSettings;\n}(ChildProperty));\nexport { QuickToolbarSettings };\n/**\n * Configures the Paste Cleanup settings of the RichTextEditor.\n */\nvar PasteCleanupSettings = /** @class */ (function (_super) {\n __extends(PasteCleanupSettings, _super);\n function PasteCleanupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"prompt\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedAttrs\", void 0);\n __decorate([\n Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])\n ], PasteCleanupSettings.prototype, \"allowedStyleProps\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedTags\", void 0);\n __decorate([\n Property(true)\n ], PasteCleanupSettings.prototype, \"keepFormat\", void 0);\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"plainText\", void 0);\n return PasteCleanupSettings;\n}(ChildProperty));\nexport { PasteCleanupSettings };\n/**\n * Configures the font family settings of the RichTextEditor.\n */\nvar FontFamily = /** @class */ (function (_super) {\n __extends(FontFamily, _super);\n function FontFamily() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontFamily.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], FontFamily.prototype, \"width\", void 0);\n __decorate([\n Property(fontFamily)\n ], FontFamily.prototype, \"items\", void 0);\n return FontFamily;\n}(ChildProperty));\nexport { FontFamily };\n/**\n * Configures the font size settings of the RichTextEditor.\n */\nvar FontSize = /** @class */ (function (_super) {\n __extends(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontSize.prototype, \"default\", void 0);\n __decorate([\n Property('35px')\n ], FontSize.prototype, \"width\", void 0);\n __decorate([\n Property(fontSize)\n ], FontSize.prototype, \"items\", void 0);\n return FontSize;\n}(ChildProperty));\nexport { FontSize };\n/**\n * Configures the format settings of the RichTextEditor.\n */\nvar Format = /** @class */ (function (_super) {\n __extends(Format, _super);\n function Format() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Format.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], Format.prototype, \"width\", void 0);\n __decorate([\n Property(formatItems)\n ], Format.prototype, \"types\", void 0);\n return Format;\n}(ChildProperty));\nexport { Format };\n/**\n * Configures the font Color settings of the RichTextEditor.\n */\nvar FontColor = /** @class */ (function (_super) {\n __extends(FontColor, _super);\n function FontColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ff0000')\n ], FontColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], FontColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], FontColor.prototype, \"columns\", void 0);\n __decorate([\n Property(fontColor)\n ], FontColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], FontColor.prototype, \"modeSwitcher\", void 0);\n return FontColor;\n}(ChildProperty));\nexport { FontColor };\n/**\n * Configures the background Color settings of the RichTextEditor.\n */\nvar BackgroundColor = /** @class */ (function (_super) {\n __extends(BackgroundColor, _super);\n function BackgroundColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ffff00')\n ], BackgroundColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], BackgroundColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], BackgroundColor.prototype, \"columns\", void 0);\n __decorate([\n Property(backgroundColor)\n ], BackgroundColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], BackgroundColor.prototype, \"modeSwitcher\", void 0);\n return BackgroundColor;\n}(ChildProperty));\nexport { BackgroundColor };\n/**\n * Configures the numberFormatList settings of the RichTextEditor.\n */\nvar NumberFormatList = /** @class */ (function (_super) {\n __extends(NumberFormatList, _super);\n function NumberFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(numberFormatList)\n ], NumberFormatList.prototype, \"types\", void 0);\n return NumberFormatList;\n}(ChildProperty));\nexport { NumberFormatList };\n/**\n * Configures the bulletFormatList settings of the RichTextEditor.\n */\nvar BulletFormatList = /** @class */ (function (_super) {\n __extends(BulletFormatList, _super);\n function BulletFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(bulletFormatList)\n ], BulletFormatList.prototype, \"types\", void 0);\n return BulletFormatList;\n}(ChildProperty));\nexport { BulletFormatList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\n/**\n * Objects used for configuring the iframe resources properties.\n */\nvar Resources = /** @class */ (function (_super) {\n __extends(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], Resources.prototype, \"styles\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"scripts\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n/**\n * Configures the iframe settings of the RTE.\n */\nvar IFrameSettings = /** @class */ (function (_super) {\n __extends(IFrameSettings, _super);\n function IFrameSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], IFrameSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], IFrameSettings.prototype, \"attributes\", void 0);\n __decorate([\n Complex({}, Resources)\n ], IFrameSettings.prototype, \"resources\", void 0);\n return IFrameSettings;\n}(ChildProperty));\nexport { IFrameSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the inlineMode property of the RTE.\n */\nvar InlineMode = /** @class */ (function (_super) {\n __extends(InlineMode, _super);\n function InlineMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InlineMode.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], InlineMode.prototype, \"onSelection\", void 0);\n return InlineMode;\n}(ChildProperty));\nexport { InlineMode };\n","/**\n * @param {string} htmlAttributes - specifies the string value\n * @param {IRichTextEditor} rte - specifies the rte value\n * @param {boolean} isFrame - specifies the boolean value\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function setAttributes(htmlAttributes, rte, isFrame, initial) {\n var target;\n if (isFrame) {\n var iFrame = rte.contentModule.getDocument();\n target = iFrame.querySelector('body');\n }\n else {\n target = rte.element;\n }\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n target.classList.add(htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && htmlAttributes[htmlAttr] === 'disabled') {\n rte.enabled = false;\n rte.setEnable();\n }\n else if (htmlAttr === 'readonly' && htmlAttributes[htmlAttr] === 'readonly') {\n rte.readonly = true;\n rte.setReadOnly(initial);\n }\n else if (htmlAttr === 'style') {\n target.setAttribute('style', htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'tabindex') {\n rte.inputElement.setAttribute('tabindex', htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'placeholder') {\n rte.placeholder = htmlAttributes[htmlAttr];\n rte.setPlaceHolder();\n }\n else {\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1) {\n rte.valueContainer.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n else {\n target.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n}\n","import { Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\n/**\n * `FullScreen` module is used to maximize and minimize screen\n */\nvar FullScreen = /** @class */ (function () {\n function FullScreen(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * showFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.showFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n this.scrollableParent = getScrollableParent(this.parent.element);\n if (!this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Maximize',\n targetItem: 'Maximize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n if (_this.parent.toolbarSettings.enableFloating &&\n !_this.parent.inlineMode.enable && _this.parent.toolbarSettings.enable) {\n _this.parent.getToolbarElement().style.width = '100%';\n _this.parent.getToolbarElement().style.top = '0px';\n }\n _this.parent.element.classList.add(classes.CLS_FULL_SCREEN);\n _this.toggleParentOverflow(true);\n _this.parent.setContentHeight();\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n if (Browser.isDevice) {\n _this.parent.toolbarModule.removeFixedTBarClass();\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Maximize',\n updateItem: 'Minimize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n }\n _this.parent.trigger(events.actionComplete, { requestType: 'Maximize', targetItem: 'Maximize', args: event });\n }\n });\n }\n };\n /**\n * hideFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.hideFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Minimize',\n targetItem: 'Minimize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n _this.parent.element.classList.remove(classes.CLS_FULL_SCREEN);\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n _this.parent.setContentHeight();\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Minimize',\n updateItem: 'Maximize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n if (Browser.isDevice && _this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.addFixedTBarClass();\n }\n }\n _this.parent.trigger(events.actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });\n }\n });\n }\n };\n // eslint-disable-next-line\n FullScreen.prototype.toggleParentOverflow = function (isAdd) {\n if (isNOU(this.scrollableParent)) {\n return;\n }\n for (var i = 0; i < this.scrollableParent.length; i++) {\n if (this.scrollableParent[i].nodeName === '#document') {\n var elem = document.querySelector('body');\n addClass([elem], ['e-rte-overflow']);\n }\n else {\n var elem = this.scrollableParent[i];\n addClass([elem], ['e-rte-overflow']);\n }\n }\n };\n FullScreen.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'full-screen':\n this.showFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n case 'escape':\n this.hideFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n }\n };\n FullScreen.prototype.addEventListener = function () {\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n FullScreen.prototype.removeEventListener = function () {\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * destroy method\n *\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.destroy = function () {\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n this.toggleParentOverflow(false);\n }\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n this.removeEventListener();\n };\n return FullScreen;\n}());\nexport { FullScreen };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * Dialog Renderer\n */\nvar DialogRenderer = /** @class */ (function () {\n function DialogRenderer(parent) {\n this.parent = parent;\n }\n /**\n * dialog render method\n *\n * @param {DialogModel} e - specifies the dialog model.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.render = function (e) {\n var dlgObj;\n e.beforeOpen = this.beforeOpen.bind(this);\n e.open = this.open.bind(this);\n if (isNOU(e.close)) {\n e.close = this.close.bind(this);\n }\n e.beforeClose = this.beforeClose.bind(this);\n // eslint-disable-next-line\n dlgObj = new Dialog(e);\n dlgObj.isStringTemplate = true;\n return dlgObj;\n };\n DialogRenderer.prototype.beforeOpen = function (args) {\n this.parent.trigger(events.beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.beforeOpenCallback = function (args) {\n if (args.cancel) {\n this.parent.notify(events.clearDialogObj, null);\n }\n };\n DialogRenderer.prototype.open = function (args) {\n this.parent.trigger(events.dialogOpen, args);\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n this.parent.trigger(events.beforeDialogClose, args, function (closeArgs) {\n if (!closeArgs.cancel) {\n if (closeArgs.container.classList.contains('e-popup-close')) {\n closeArgs.cancel = true;\n }\n }\n });\n };\n /**\n * dialog close method\n *\n * @param {Object} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.close = function (args) {\n this.parent.trigger(events.dialogClose, args);\n };\n return DialogRenderer;\n}());\nexport { DialogRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 __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};\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, Complex, Browser, addClass, select, detach } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, formatUnit, L10n, closest } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, Event, removeClass, print as printWindow, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, compile, append, extend, debounce, isBlazor } from '@syncfusion/ej2-base';\nimport { Touch as EJ2Touch } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { Render } from '../renderer/render';\nimport { ViewSource } from '../renderer/view-source';\nimport { executeGroup } from './interface';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { RenderType, ToolbarType, DialogType } from './enum';\nimport { ExecCommandCallBack } from '../actions/execute-command-callback';\nimport { KeyboardEvents } from '../actions/keyboard';\nimport { ToolbarSettings, ImageSettings, QuickToolbarSettings, FontFamily, FontSize, Format, NumberFormatList, BulletFormatList } from '../models/toolbar-settings';\nimport { FileManagerSettings } from '../models/toolbar-settings';\nimport { TableSettings, PasteCleanupSettings } from '../models/toolbar-settings';\nimport { FontColor, BackgroundColor } from '../models/toolbar-settings';\nimport { IFrameSettings } from '../models/iframe-settings';\nimport { InlineMode } from '../models/inline-mode';\nimport { defaultLocale } from '../models/default-locale';\nimport { setAttributes } from '../actions/html-attributes';\nimport { FullScreen } from '../actions/full-screen';\nimport * as CONSTANT from '../../common/constant';\nimport { dispatchEvent, getEditValue, isIDevice, decode, isEditableValueEmpty } from '../base/util';\nimport { DialogRenderer } from '../renderer/dialog-renderer';\n/**\n * Represents the Rich Text Editor component.\n * ```html\n * \n * \n * ```\n */\nvar RichTextEditor = /** @class */ (function (_super) {\n __extends(RichTextEditor, _super);\n function RichTextEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.defaultResetValue = null;\n _this.isResizeInitialized = false;\n /**\n * @hidden\n\n */\n _this.isFocusOut = false;\n /**\n * @hidden\n\n */\n _this.isRTE = false;\n /**\n * @hidden\n\n */\n _this.isBlur = true;\n _this.needsID = true;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - specifies the declaration.\n * @hidden\n\n */\n RichTextEditor.prototype.requiredModules = function () {\n var modules = [];\n if (this.toolbarSettings.enable) {\n modules.push({ member: 'toolbar', args: [this, this.serviceLocator] });\n modules.push({\n member: 'link',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'table',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'image',\n args: [this, this.serviceLocator]\n });\n if (this.quickToolbarSettings.enable) {\n modules.push({ member: 'quickToolbar', args: [this, this.serviceLocator] });\n }\n }\n if (this.showCharCount) {\n modules.push({ member: 'count', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'Markdown') {\n modules.push({ member: 'markdownEditor', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'HTML') {\n modules.push({ member: 'htmlEditor', args: [this, this.serviceLocator] });\n modules.push({ member: 'pasteCleanup', args: [this, this.serviceLocator] });\n }\n if (this.fileManagerSettings.enable) {\n modules.push({ member: 'fileManager', args: [this, this.serviceLocator] });\n }\n if (this.enableResize) {\n modules.push({ member: 'resize', args: [this] });\n }\n return modules;\n };\n RichTextEditor.prototype.updateEnable = function () {\n if (this.enabled) {\n removeClass([this.element], classes.CLS_DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n if (!isNOU(this.htmlAttributes.tabindex)) {\n this.inputElement.setAttribute('tabindex', this.htmlAttributes.tabindex);\n }\n else {\n this.inputElement.setAttribute('tabindex', '0');\n }\n }\n else {\n if (this.getToolbar()) {\n removeClass(this.getToolbar().querySelectorAll('.' + classes.CLS_ACTIVE), classes.CLS_ACTIVE);\n removeClass([this.getToolbar()], [classes.CLS_TB_FLOAT, classes.CLS_TB_ABS_FLOAT]);\n }\n addClass([this.element], classes.CLS_DISABLED);\n this.element.tabIndex = -1;\n this.element.setAttribute('aria-disabled', 'true');\n this.inputElement.setAttribute('tabindex', '-1');\n }\n };\n /**\n * setEnable method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setEnable = function () {\n this.updateEnable();\n // eslint-disable-next-line\n (this.enabled) ? this.eventInitializer() : this.unWireEvents();\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @hidden\n * @private\n */\n RichTextEditor.prototype.preRender = function () {\n this.onBlurHandler = this.blurHandler.bind(this);\n this.onFocusHandler = this.focusHandler.bind(this);\n this.onResizeHandler = this.resizeHandler.bind(this);\n this.clickPoints = { clientX: 0, clientY: 0 };\n this.initialValue = this.value;\n this.serviceLocator = new ServiceLocator;\n this.initializeServices();\n this.setContainer();\n this.persistData();\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n attributes(this.element, { role: 'application' });\n };\n RichTextEditor.prototype.persistData = function () {\n if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {\n this.element.id = this.originalElement.id + '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n RichTextEditor.prototype.setContainer = function () {\n this.originalElement = this.element.cloneNode(true);\n if (this.value === null || this.valueTemplate !== null) {\n this.setValue();\n }\n if (this.element.hasAttribute('tabindex')) {\n this.htmlAttributes = { 'tabindex': this.element.getAttribute('tabindex') };\n this.element.removeAttribute('tabindex');\n }\n if (!this.isBlazor()) {\n this.element.innerHTML = '';\n }\n var invalidAttr = ['class', 'style', 'id', 'ejs-for'];\n var htmlAttr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(/^data-val/.test(this.element.attributes[a].name))) { // data-val for asp.net core data annotation validation.\n htmlAttr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(htmlAttr, this.htmlAttributes, htmlAttr);\n this.setProperties({ htmlAttributes: htmlAttr }, true);\n if (!isNOU(this.htmlAttributes.id)) {\n this.element.id = this.htmlAttributes.id;\n }\n if (this.element.tagName === 'TEXTAREA') {\n var rteOuterWrapper = this.createElement('div', {\n className: this.element.getAttribute('class')\n });\n if (!this.isBlazor()) {\n this.element.innerHTML = '';\n }\n this.element.parentElement.insertBefore(rteOuterWrapper, this.element);\n if (isBlazor()) {\n rteOuterWrapper.appendChild(this.element);\n this.valueContainer = this.createElement('textarea', {\n id: this.element.id + '-value'\n });\n }\n else {\n this.valueContainer = this.element;\n }\n removeClass([this.valueContainer], this.element.getAttribute('class').split(' '));\n if (this.isBlazor()) {\n addClass([this.element], classes.CLS_RTE_HIDDEN);\n }\n this.element = rteOuterWrapper;\n }\n else {\n this.valueContainer = this.createElement('textarea', {\n id: this.getID() + '-value'\n });\n }\n this.valueContainer.name = this.getID();\n addClass([this.valueContainer], classes.CLS_RTE_HIDDEN);\n this.element.appendChild(this.valueContainer);\n };\n /**\n * getPersistData method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Focuses the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusIn = function () {\n if (this.enabled) {\n this.inputElement.focus();\n this.focusHandler({});\n }\n };\n /**\n * Blurs the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusOut = function () {\n if (this.enabled) {\n this.inputElement.blur();\n this.blurHandler({});\n }\n };\n /**\n * Selects all the content in RichTextEditor\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectAll = function () {\n this.notify(events.selectAll, {});\n };\n /**\n * Selects a content range or an element\n *\n * @param {Range} range - Specify the range which you want to select within the content.\n * The method used to select a particular sentence or word or entire document.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectRange = function (range) {\n this.notify(events.selectRange, { range: range });\n };\n /**\n * Retrieves the HTML markup content from currently selected content of RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getSelection = function () {\n var str = '';\n this.notify(events.getSelectedHtml, {\n callBack: function (txt) {\n str = txt;\n }\n });\n return str;\n };\n /**\n * Executes the commands\n *\n * @returns {void}\n * @param {CommandName} commandName - Specifies the name of the command to be executed.\n * @param {string | HTMLElement | ILinkCommandsArgs | IImageCommandsArgs} value - Specifies the value that you want to execute.\n * @param {ExecuteCommandOption} option - specifies the command option\n * @public\n */\n RichTextEditor.prototype.executeCommand = function (commandName, value, option) {\n value = this.htmlPurifier(commandName, value);\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (this.iframeSettings.enable) {\n this.formatter.editorManager.nodeSelection.Clear(this.element.ownerDocument);\n }\n var toFocus = (this.iframeSettings.enable &&\n range.startContainer === this.inputElement) ? true : !this.inputElement.contains(range.startContainer);\n if (toFocus) {\n this.focusIn();\n }\n }\n var tool = executeGroup[commandName];\n if (option && option.undo) {\n if (option.undo && this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (value ? value : tool.value), null, null, (value ? value : tool.value), (value ? value : tool.value));\n if (option && option.undo) {\n this.formatter.saveData();\n this.formatter.enableUndo(this);\n }\n this.setPlaceHolder();\n this.notify(events.contentChanged, {});\n };\n RichTextEditor.prototype.htmlPurifier = function (command, value) {\n if (this.editorMode === 'HTML') {\n switch (command) {\n case 'insertHTML':\n if (this.enableHtmlSanitizer) {\n if (typeof value === 'string') {\n value = this.htmlEditorModule.sanitizeHelper(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value.outerHTML);\n }\n }\n break;\n case 'insertTable':\n if (isNOU(value.width)) {\n value.width = { minWidth: this.tableSettings.minWidth,\n maxWidth: this.tableSettings.maxWidth, width: this.tableSettings.width };\n }\n break;\n case 'insertImage': {\n var temp = this.createElement('img', {\n attrs: {\n src: value.url\n }\n });\n var imageValue = temp.outerHTML;\n if (this.enableHtmlSanitizer) {\n imageValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (imageValue !== '' && (this.createElement('div', {\n innerHTML: imageValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertImageSettings.minWidth,\n maxWidth: this.insertImageSettings.maxWidth, width: this.insertImageSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertImageSettings.minHeight,\n maxHeight: this.insertImageSettings.maxHeight, height: this.insertImageSettings.height };\n }\n break;\n }\n case 'createLink': {\n var tempNode = this.createElement('a', {\n attrs: {\n href: value.url\n }\n });\n var linkValue = tempNode.outerHTML;\n if (this.enableHtmlSanitizer) {\n linkValue = this.htmlEditorModule.sanitizeHelper(tempNode.outerHTML);\n }\n var href = (linkValue !== '' && (this.createElement('div', {\n innerHTML: linkValue\n }).firstElementChild).getAttribute('href')) || null;\n href = !isNOU(href) ? href : '';\n value.url = href;\n break;\n }\n }\n }\n return value;\n };\n RichTextEditor.prototype.encode = function (value) {\n var divNode = this.createElement('div');\n divNode.innerText = value.trim();\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n\n */\n RichTextEditor.prototype.render = function () {\n if (this.value && !this.valueTemplate) {\n this.setProperties({ value: this.serializeValue(this.value) }, true);\n }\n this.renderModule = new Render(this, this.serviceLocator);\n this.sourceCodeModule = new ViewSource(this, this.serviceLocator);\n this.notify(events.initialLoad, {});\n this.trigger(events.load);\n this.RTERender();\n // eslint-disable-next-line\n var execCommandCallBack = new ExecCommandCallBack(this);\n this.notify(events.initialEnd, {});\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.toolbarSettings.enable && this.toolbarSettings.type === 'Expand' && !isNOU(this.getToolbar()) &&\n (this.toolbarSettings.items.indexOf('Undo') > -1 && this.toolbarSettings.items.indexOf('Redo') > -1)) {\n this.disableToolbarItem(['Undo', 'Redo']);\n }\n this.setContentHeight();\n if (this.value !== null) {\n if (!this.isBlazor()) {\n this.valueContainer.defaultValue = this.value;\n }\n else {\n this.defaultResetValue = this.value;\n }\n }\n // eslint-disable-next-line\n (!this.enabled) ? this.unWireEvents() : this.eventInitializer();\n this.renderComplete();\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.eventInitializer = function () {\n this.wireEvents();\n };\n /**\n * For internal use only - keydown the event handler;\n *\n * @param {KeyboardEvent} e - specifies the event.\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.keyDown = function (e) {\n this.notify(events.keyDown, { member: 'keydown', args: e });\n this.restrict(e);\n if (this.editorMode === 'HTML' && ((e.which === 8 && e.code === 'Backspace') || (e.which === 46 && e.code === 'Delete'))) {\n var range = this.getRange();\n var startNode = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :\n range.startContainer;\n if (closest(startNode, 'pre') &&\n (e.which === 8 && range.startContainer.textContent.charCodeAt(range.startOffset - 1) === 8203) ||\n (e.which === 46 && range.startContainer.textContent.charCodeAt(range.startOffset) === 8203)) {\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer = e.which === 8 ? range.startOffset - 1 : range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, pointer);\n }\n else if ((e.code === 'Backspace' && e.which === 8) &&\n range.startContainer.textContent.charCodeAt(0) === 8203 && range.collapsed) {\n var parentEle = range.startContainer.parentElement;\n var index = void 0;\n var i = void 0;\n for (i = 0; i < parentEle.childNodes.length; i++) {\n if (parentEle.childNodes[i] === range.startContainer) {\n index = i;\n }\n }\n var bool = true;\n var removeNodeArray = [];\n for (i = index; i >= 0; i--) {\n if (parentEle.childNodes[i].nodeType === 3 && parentEle.childNodes[i].textContent.charCodeAt(0) === 8203 && bool) {\n removeNodeArray.push(i);\n }\n else {\n bool = false;\n }\n }\n if (removeNodeArray.length > 0) {\n for (i = removeNodeArray.length - 1; i > 0; i--) {\n parentEle.childNodes[removeNodeArray[i]].textContent = '';\n }\n }\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, range.startOffset);\n }\n }\n if (this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n this.formatter.process(this, null, e);\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable) {\n // eslint-disable-next-line\n var selector = '.e-toolbar-item[aria-disabled=\"false\"][title] [tabindex]';\n this.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n case 'escape':\n this.contentModule.getEditPanel().focus();\n break;\n }\n }\n if (!isNOU(this.placeholder)) {\n if ((!isNOU(this.placeHolderWrapper)) && (this.inputElement.textContent.length !== 1)) {\n this.placeHolderWrapper.style.display = 'none';\n }\n else {\n this.setPlaceHolder();\n }\n }\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n this.notify(events.keyUp, { member: 'keyup', args: e });\n if (e.code === 'KeyX' && e.which === 88 && e.keyCode === 88 && e.ctrlKey && (this.inputElement.innerHTML === '' ||\n this.inputElement.innerHTML === '
    ')) {\n this.inputElement.innerHTML = getEditValue('


    ', this);\n }\n var allowedKeys = e.which === 32 || e.which === 13 || e.which === 8 || e.which === 46;\n if (((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'\n && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {\n this.formatter.onKeyHandler(this, e);\n }\n if (this.inputElement && this.inputElement.textContent.length !== 0\n || this.element.querySelectorAll('.e-toolbar-item.e-active').length > 0) {\n this.notify(events.toolbarRefresh, { args: e });\n }\n if (!isNOU(this.placeholder)) {\n this.setPlaceHolder();\n }\n };\n /**\n * @param {string} value - specifies the value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.serializeValue = function (value) {\n if (this.editorMode === 'HTML' && !isNOU(value)) {\n if (this.enableHtmlEncode) {\n value = this.htmlEditorModule.sanitizeHelper(decode(value));\n value = this.encode(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value);\n }\n }\n return value;\n };\n /**\n * This method will clean up the HTML against cross-site scripting attack and return the HTML as string.\n * It's only applicable to editorMode as `HTML`.\n *\n * @param {string} value - Specifies the value that you want to sanitize.\n * @returns {string} - specifies the the string value\n */\n RichTextEditor.prototype.sanitizeHtml = function (value) {\n return this.serializeValue(value);\n };\n /**\n * updateValue method\n *\n * @param {string} value - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.updateValue = function (value) {\n if (isNOU(value)) {\n var inputVal = this.inputElement.innerHTML;\n this.setProperties({ value: isEditableValueEmpty(inputVal) ? null : inputVal });\n }\n else {\n this.setProperties({ value: value });\n }\n };\n RichTextEditor.prototype.triggerEditArea = function (e) {\n if (!isIDevice()) {\n this.notify(events.editAreaClick, { member: 'editAreaClick', args: e });\n }\n else {\n var touch = (e.touches ? e.changedTouches[0] : e);\n if (this.clickPoints.clientX === touch.clientX && this.clickPoints.clientY === touch.clientY) {\n this.notify(events.editAreaClick, { member: 'editAreaClick', args: e });\n }\n }\n };\n RichTextEditor.prototype.notifyMouseUp = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n this.notify(events.mouseUp, { member: 'mouseUp', args: e,\n touchData: { prevClientX: this.clickPoints.clientX, prevClientY: this.clickPoints.clientY,\n clientX: touch.clientX, clientY: touch.clientY }\n });\n if (this.inputElement && ((this.editorMode === 'HTML' && this.inputElement.textContent.length !== 0) ||\n (this.editorMode === 'Markdown' && this.inputElement.value.length !== 0))) {\n this.notify(events.toolbarRefresh, { args: e });\n }\n this.triggerEditArea(e);\n };\n RichTextEditor.prototype.mouseUp = function (e) {\n if (this.quickToolbarSettings.showOnRightClick && Browser.isDevice) {\n var target = e.target;\n var closestTable = closest(target, 'table');\n if (target && target.nodeName === 'A' || target.nodeName === 'IMG' || (target.nodeName === 'TD' || target.nodeName === 'TH' ||\n target.nodeName === 'TABLE' || (closestTable && this.contentModule.getEditPanel().contains(closestTable)))) {\n return;\n }\n }\n this.notifyMouseUp(e);\n if (e.detail === 3) {\n var range = this.getRange();\n var selection = this.formatter.editorManager.domNode.getSelection();\n if (/\\s+$/.test(selection.toString())) {\n if (!isNOU(range.startContainer.parentElement) && (!isNOU(range.startContainer.parentElement.nextSibling) &&\n (range.startContainer.parentElement.nextSibling.nodeType !== 3 ||\n /\\s+$/.test(range.startContainer.parentElement.nextSibling.textContent)) || range.startOffset === range.endOffset)\n || range.startContainer.parentElement.tagName.toLocaleLowerCase() === 'li') {\n range.setStart(range.startContainer, range.startOffset);\n range.setEnd(range.startContainer, range.startContainer.textContent.length);\n }\n }\n }\n };\n /**\n * @param {Function} module - specifies the module function.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onCopy = function () {\n this.contentModule.getDocument().execCommand('copy', false, null);\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onCut = function () {\n this.contentModule.getDocument().execCommand('cut', false, null);\n };\n /**\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onPaste = function (e) {\n var _this = this;\n var evenArgs = {\n originalEvent: e,\n cancel: false,\n requestType: 'Paste'\n };\n this.trigger(events.actionBegin, evenArgs, function (pasteArgs) {\n var currentLength = _this.getText().trim().length;\n var selectionLength = _this.getSelection().length;\n var pastedContentLength = (isNOU(e) || isNOU(e.clipboardData))\n ? 0 : e.clipboardData.getData('text/plain').length;\n var totalLength = (currentLength - selectionLength) + pastedContentLength;\n if (_this.editorMode === 'Markdown') {\n if (!(_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n e.preventDefault();\n }\n return;\n }\n if (!pasteArgs.cancel && _this.inputElement.contentEditable === 'true' &&\n (_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n if (!isNOU(_this.pasteCleanupModule)) {\n _this.notify(events.pasteClean, { args: e });\n }\n else {\n var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n var value = null;\n var htmlValue = false;\n if (e && !isNOU(e.clipboardData)) {\n value = e.clipboardData.getData('text/plain');\n htmlValue = e.clipboardData.getData('text/html').indexOf('MsoNormal') > 0;\n }\n var file = e && e.clipboardData && e.clipboardData.items.length > 0 ?\n e.clipboardData.items[0].getAsFile() : null;\n if (value !== null) {\n _this.notify(events.paste, {\n file: file,\n args: e,\n text: value,\n isWordPaste: htmlValue\n });\n }\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_1);\n }, 0);\n }\n }\n else {\n e.preventDefault();\n }\n });\n };\n /**\n * @param {string} action - specifies the string value.\n * @param {MouseEvent} event - specifies the event.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.clipboardAction = function (action, event) {\n switch (action.toLowerCase()) {\n case 'cut':\n this.onCut();\n this.formatter.onSuccess(this, {\n requestType: 'Cut',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'copy':\n this.onCopy();\n this.formatter.onSuccess(this, {\n requestType: 'Copy',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'paste':\n this.onPaste(event);\n break;\n }\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @returns {void}\n */\n RichTextEditor.prototype.destroy = function () {\n if (this.isDestroyed || !this.isRendered) {\n return;\n }\n if (this.element.offsetParent === null && !isNOU(this.toolbarModule)) {\n this.toolbarModule.destroy();\n return;\n }\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n this.unWireEvents();\n if (this.originalElement.tagName === 'TEXTAREA') {\n if (isBlazor()) {\n detach(this.valueContainer);\n this.valueContainer = this.element.querySelector('.e-blazor-hidden.e-control.e-richtexteditor');\n }\n this.element.parentElement.insertBefore(this.valueContainer, this.element);\n this.valueContainer.id = this.getID();\n this.valueContainer.removeAttribute('name');\n detach(this.element);\n if (this.originalElement.innerHTML.trim() !== '') {\n if (!isBlazor()) {\n this.valueContainer.value = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNOU(this.initialValue) ? this.initialValue : null) }, true);\n }\n }\n else {\n this.valueContainer.value = !this.isBlazor() ? this.valueContainer.defaultValue : this.defaultResetValue;\n }\n this.element = this.valueContainer;\n for (var i = 0; i < this.originalElement.classList.length; i++) {\n addClass([this.element], this.originalElement.classList[i]);\n }\n removeClass([this.element], classes.CLS_RTE_HIDDEN);\n }\n else {\n if (this.originalElement.innerHTML.trim() !== '') {\n this.element.innerHTML = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNOU(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n if (this.placeholder && this.placeHolderWrapper) {\n this.placeHolderWrapper = null;\n }\n if (!isNOU(this.cssClass)) {\n var allClassName = this.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n removeClass([this.element], allClassName[i]);\n }\n }\n }\n this.removeHtmlAttributes();\n this.removeAttributes();\n _super.prototype.destroy.call(this);\n this.isRendered = false;\n if (this.enablePersistence) {\n window.localStorage.removeItem(this.getModuleName() + this.element.id);\n }\n };\n RichTextEditor.prototype.removeHtmlAttributes = function () {\n if (this.htmlAttributes) {\n var keys = Object.keys(this.htmlAttributes);\n for (var i = 0; i < keys.length && this.element.hasAttribute(keys[i]); i++) {\n this.element.removeAttribute(keys[i]);\n }\n }\n };\n RichTextEditor.prototype.removeAttributes = function () {\n if (!this.enabled) {\n removeClass([this.element], classes.CLS_DISABLED);\n }\n if (this.enableRtl) {\n removeClass([this.element], classes.CLS_RTL);\n }\n if (this.readonly) {\n removeClass([this.element], classes.CLS_RTE_READONLY);\n }\n if (this.element.style.width !== '' && this.originalElement.style.width === '') {\n this.element.style.removeProperty('width');\n }\n if (this.element.style.height !== '' && this.originalElement.style.height === '') {\n this.element.style.removeProperty('height');\n }\n this.element.removeAttribute('aria-disabled');\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n };\n RichTextEditor.prototype.destroyDependentModules = function () {\n /* destroy dependent modules */\n this.renderModule.destroy();\n this.formatter.editorManager.undoRedoManager.destroy();\n this.sourceCodeModule.destroy();\n };\n /**\n * Returns the HTML or Text inside the RichTextEditor.\n *\n * @returns {Element} - specifies the element.\n */\n RichTextEditor.prototype.getContent = function () {\n if (this.iframeSettings.enable && isBlazor()) {\n return this.inputElement;\n }\n else {\n return this.contentModule.getPanel();\n }\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getText = function () {\n return this.contentModule.getText();\n };\n /**\n * Returns the html value of the selected content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getSelectedHtml = function () {\n var range;\n var wrapperElm = this.createElement('div');\n var selection = this.contentModule.getDocument().getSelection();\n if (selection.rangeCount > 0) {\n range = selection.getRangeAt(0);\n var selectedHtml = range.cloneContents();\n wrapperElm.appendChild(selectedHtml);\n }\n return wrapperElm.innerHTML;\n };\n /**\n * It shows the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showInlineToolbar = function () {\n if (this.inlineMode.enable) {\n var currentRange = this.getRange();\n var targetElm = currentRange.endContainer.nodeName === '#text' ?\n currentRange.endContainer.parentElement : currentRange.endContainer;\n var x = currentRange.getClientRects()[0].left;\n var y = currentRange.getClientRects()[0].top;\n this.quickToolbarModule.showInlineQTBar(x, y, targetElm);\n }\n };\n /**\n * It hides the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.hideInlineToolbar = function () {\n this.quickToolbarModule.hideInlineQTBar();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @private\n\n */\n RichTextEditor.prototype.getModuleName = function () {\n return 'richtexteditor';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} newProp - specifies the the property.\n * @param {RichTextEditorModel} oldProp - specifies the old property.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value': {\n var nVal = newProp[prop];\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if (!isNOU(nVal) && nVal !== '') {\n this.value = this.serializeValue(((this.enableHtmlEncode) ? this.encode(decode(val)) : val));\n }\n this.updatePanelValue();\n this.setPlaceHolder();\n this.notify(events.xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n }\n case 'valueTemplate':\n this.setValue();\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'width':\n this.setWidth(newProp[prop]);\n if (this.toolbarSettings.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n this.resizeHandler();\n }\n break;\n case 'height':\n this.setHeight(newProp[prop]);\n this.setContentHeight();\n this.autoResize();\n break;\n case 'readonly':\n this.setReadOnly(false);\n break;\n case 'cssClass':\n this.element.classList.remove(oldProp[prop]);\n this.setCssClass(newProp[prop]);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'placeholder':\n this.placeholder = newProp[prop];\n this.setPlaceHolder();\n break;\n case 'htmlAttributes':\n setAttributes(this.htmlAttributes, this, false, false);\n break;\n case 'iframeSettings': {\n var frameSetting = oldProp[prop];\n if (frameSetting.resources) {\n var iframe = this.contentModule.getDocument();\n var header = iframe.querySelector('head');\n var files = void 0;\n if (frameSetting.resources.scripts) {\n files = header.querySelectorAll('.' + classes.CLS_SCRIPT_SHEET);\n this.removeSheets(files);\n }\n if (frameSetting.resources.styles) {\n files = header.querySelectorAll('.' + classes.CLS_STYLE_SHEET);\n this.removeSheets(files);\n }\n }\n this.setIframeSettings();\n break;\n }\n case 'locale':\n _super.prototype.refresh.call(this);\n break;\n case 'inlineMode':\n this.notify(events.modelChanged, { module: 'quickToolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'toolbarSettings':\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'maxLength':\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'showCharCount':\n if (newProp[prop] && this.countModule) {\n this.countModule.renderCount();\n }\n else if (newProp[prop] === false && this.countModule) {\n this.countModule.destroy();\n }\n break;\n case 'enableHtmlEncode':\n this.updateValueData();\n this.updatePanelValue();\n this.setPlaceHolder();\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'undoRedoSteps':\n case 'undoRedoTimer':\n this.formatter.editorManager.observer.notify(CONSTANT.MODEL_CHANGED, { newProp: newProp, oldProp: oldProp });\n break;\n case 'enableXhtml':\n this.notify(events.xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n break;\n case 'quickToolbarSettings':\n // eslint-disable-next-line\n newProp.quickToolbarSettings.showOnRightClick ? this.wireContextEvent() : this.unWireContextEvent();\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n default:\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n\n */\n RichTextEditor.prototype.updateValueData = function () {\n if (this.enableHtmlEncode) {\n this.setProperties({ value: this.encode(decode(this.inputElement.innerHTML)) }, true);\n }\n else {\n this.setProperties({\n value: /<[a-z][\\s\\S]*>/i.test(this.inputElement.innerHTML) ? this.inputElement.innerHTML :\n decode(this.inputElement.innerHTML)\n });\n }\n };\n RichTextEditor.prototype.removeSheets = function (srcList) {\n var i;\n for (i = 0; i < srcList.length; i++) {\n detach(srcList[i]);\n }\n };\n RichTextEditor.prototype.updatePanelValue = function () {\n var value = this.value;\n value = (this.enableHtmlEncode && this.value) ? decode(value) : value;\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (value) {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = this.value;\n }\n if (this.valueContainer) {\n this.valueContainer.value = (this.enableHtmlEncode) ? this.value : value;\n }\n if (this.editorMode === 'HTML' && this.inputElement && this.inputElement.innerHTML.trim() !== value.trim()) {\n this.inputElement.innerHTML = value;\n }\n else if (this.editorMode === 'Markdown' && this.inputElement\n && this.inputElement.value.trim() !== value.trim()) {\n this.inputElement.value = value;\n }\n }\n else {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = '';\n }\n if (this.editorMode === 'HTML') {\n this.inputElement.innerHTML = '


    ';\n }\n else {\n this.inputElement.value = '';\n }\n if (this.valueContainer) {\n this.valueContainer.value = '';\n }\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n };\n RichTextEditor.prototype.setHeight = function (height) {\n if (height !== 'auto') {\n this.element.style.height = formatUnit(height);\n }\n else {\n this.element.style.height = 'auto';\n }\n if (this.toolbarSettings.type === 'Expand' && (typeof (this.height) === 'string' &&\n this.height.indexOf('px') > -1 || typeof (this.height) === 'number')) {\n this.element.classList.add(classes.CLS_RTE_FIXED_TB_EXPAND);\n }\n else {\n this.element.classList.remove(classes.CLS_RTE_FIXED_TB_EXPAND);\n }\n };\n /**\n * setPlaceHolder method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setPlaceHolder = function () {\n if (this.inputElement && this.placeholder && this.iframeSettings.enable !== true) {\n if (this.editorMode !== 'Markdown') {\n if (!this.placeHolderWrapper) {\n this.placeHolderWrapper = this.createElement('span', { className: 'rte-placeholder e-rte-placeholder' });\n if (this.inputElement) {\n this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);\n }\n attributes(this.placeHolderWrapper, {\n 'style': 'font-size: 14px; padding: 16px; margin-left: 0px; margin-right: 0px;'\n });\n }\n this.placeHolderWrapper.innerHTML = this.placeholder;\n if (this.inputElement.textContent.length === 0 &&\n !isNOU(this.inputElement.firstChild) && this.inputElement.firstChild.nodeName === 'P' &&\n !isNOU(this.inputElement.firstChild.firstChild) && this.inputElement.firstChild.firstChild.nodeName === 'BR' &&\n this.inputElement.innerHTML !== '



    ') {\n this.placeHolderWrapper.style.display = 'block';\n }\n else {\n this.placeHolderWrapper.style.display = 'none';\n }\n }\n else {\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n }\n };\n RichTextEditor.prototype.setWidth = function (width) {\n if (width !== 'auto') {\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n }\n else {\n this.element.style.width = 'auto';\n }\n };\n RichTextEditor.prototype.setCssClass = function (cssClass) {\n if (!isNOU(cssClass)) {\n var allClassName = cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n this.element.classList.add(allClassName[i]);\n }\n }\n }\n };\n RichTextEditor.prototype.updateRTL = function () {\n this.notify(events.rtlMode, { enableRtl: this.enableRtl });\n if (this.enableRtl) {\n this.element.classList.add(classes.CLS_RTL);\n }\n else {\n this.element.classList.remove(classes.CLS_RTL);\n }\n };\n RichTextEditor.prototype.updateReadOnly = function () {\n this.notify(events.readOnlyMode, { editPanel: this.inputElement, mode: this.readonly });\n };\n /**\n * setReadOnly method\n *\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setReadOnly = function (initial) {\n this.updateReadOnly();\n if (!initial) {\n if (this.readonly && this.enabled) {\n this.unbindEvents();\n }\n else if (this.enabled) {\n this.bindEvents();\n }\n }\n };\n /**\n * By default, prints all the pages of the RichTextEditor.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.print = function () {\n var _this = this;\n var printWind;\n var printArgs = {\n element: this.inputElement,\n requestType: 'print',\n cancel: false\n };\n this.trigger(events.actionBegin, printArgs, function (printingArgs) {\n printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth);\n if (Browser.info.name === 'msie') {\n printWind.resizeTo(screen.availWidth, screen.availHeight);\n }\n printWind = printWindow(_this.inputElement, printWind);\n if (!printingArgs.cancel) {\n var actionArgs = {\n requestType: 'print'\n };\n _this.trigger(events.actionComplete, actionArgs);\n }\n });\n };\n /**\n * Refresh the view of the editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.refreshUI = function () {\n this.renderModule.refresh();\n };\n /**\n * Shows the Rich Text Editor component in full-screen mode.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showFullScreen = function () {\n this.fullScreenModule.showFullScreen();\n };\n /**\n * Enables the give toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be enable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.enableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, true, muteToolbarUpdate);\n };\n /**\n * Disables the given toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be disable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.disableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, false, muteToolbarUpdate);\n };\n /**\n * Removes the give toolbar items from the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * that you want to be remove from Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.removeToolbarItem = function (items) {\n this.toolbarModule.removeTBarItems(items);\n };\n /**\n * Get the selected range from the RichTextEditor's content.\n *\n * @returns {void}\n * @public\n\n */\n RichTextEditor.prototype.getRange = function () {\n return this.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n };\n RichTextEditor.prototype.initializeServices = function () {\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('rteLocale', this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale));\n this.serviceLocator.register('dialogRenderObject', new DialogRenderer(this));\n };\n RichTextEditor.prototype.RTERender = function () {\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.fullScreenModule = new FullScreen(this);\n this.renderModule.render();\n this.inputElement = this.contentModule.getEditPanel();\n this.setHeight(this.height);\n setAttributes(this.htmlAttributes, this, false, true);\n if (this.iframeSettings) {\n this.setIframeSettings();\n }\n this.setCssClass(this.cssClass);\n this.updateEnable();\n this.setPlaceHolder();\n this.updateRTL();\n this.updateReadOnly();\n this.updatePanelValue();\n if (this.enableHtmlEncode && !isNOU(this.value)) {\n this.setProperties({ value: this.encode(decode(this.value)) });\n }\n };\n RichTextEditor.prototype.setIframeSettings = function () {\n if (this.iframeSettings.resources) {\n var styleSrc = this.iframeSettings.resources.styles;\n var scriptSrc = this.iframeSettings.resources.scripts;\n if (this.iframeSettings.resources.scripts.length > 0) {\n this.InjectSheet(true, scriptSrc);\n }\n if (this.iframeSettings.resources.styles.length > 0) {\n this.InjectSheet(false, styleSrc);\n }\n }\n if (this.iframeSettings.attributes) {\n setAttributes(this.iframeSettings.attributes, this, true, false);\n }\n };\n RichTextEditor.prototype.InjectSheet = function (scriptSheet, srcList) {\n try {\n if (srcList && srcList.length > 0) {\n var iFrame = this.contentModule.getDocument();\n var target = iFrame.querySelector('head');\n for (var i = 0; i < srcList.length; i++) {\n if (scriptSheet) {\n var scriptEle = this.createScriptElement();\n scriptEle.src = srcList[i];\n target.appendChild(scriptEle);\n }\n else {\n var styleEle = this.createStyleElement();\n styleEle.href = srcList[i];\n target.appendChild(styleEle);\n }\n }\n }\n }\n catch (e) {\n return;\n }\n };\n RichTextEditor.prototype.createScriptElement = function () {\n var scriptEle = this.createElement('script', {\n className: classes.CLS_SCRIPT_SHEET\n });\n scriptEle.type = 'text/javascript';\n return scriptEle;\n };\n RichTextEditor.prototype.createStyleElement = function () {\n var styleEle = this.createElement('link', {\n className: classes.CLS_STYLE_SHEET\n });\n styleEle.rel = 'stylesheet';\n return styleEle;\n };\n RichTextEditor.prototype.isBlazor = function () {\n return (!isBlazor() ? false : true);\n };\n RichTextEditor.prototype.setValue = function () {\n if (this.valueTemplate) {\n if (typeof this.valueTemplate === 'string') {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledString = compile(this.valueTemplate);\n var compiledTemplate = compiledString({});\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], this.element);\n }\n this.setProperties({ value: this.element.innerHTML.trim() });\n }\n }\n else {\n // eslint-disable-next-line\n var innerHtml = !isNOU(this.element.innerHTML) && this.element.innerHTML.replace(/<(\\/?|\\!?)(!--!--)>/g, '').trim();\n if (innerHtml !== '') {\n if (this.element.tagName === 'TEXTAREA') {\n this.setProperties({ value: decode(innerHtml) });\n }\n else {\n this.setProperties({ value: innerHtml });\n }\n }\n }\n };\n RichTextEditor.prototype.updateResizeFlag = function () {\n this.isResizeInitialized = true;\n };\n /**\n * Image max width calculation method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getInsertImgMaxWidth = function () {\n var maxWidth = this.insertImageSettings.maxWidth;\n // eslint-disable-next-line\n var imgPadding = 12;\n var imgResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (imgPadding + imgResizeBorder +\n parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +\n parseFloat(eleStyle.marginLeft.split('px')[0]) + parseFloat(eleStyle.marginRight.split('px')[0]));\n return isNOU(maxWidth) ? editEleMaxWidth : maxWidth;\n };\n /**\n * setContentHeight method\n *\n * @param {string} target - specifies the target value.\n * @param {boolean} isExpand - specifies the bollean value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setContentHeight = function (target, isExpand) {\n var heightValue;\n var topValue = 0;\n var rteHeightPercent;\n var heightPercent = typeof (this.height) === 'string' && this.height.indexOf('%') > -1;\n var cntEle = (this.sourceCodeModule.getPanel() &&\n this.sourceCodeModule.getPanel().parentElement.style.display === 'block') ? this.sourceCodeModule.getPanel().parentElement :\n this.contentModule.getPanel();\n var rteHeight = this.element.offsetHeight;\n if (rteHeight === 0 && this.height !== 'auto' && !this.getToolbar()) {\n rteHeight = parseInt(this.height, 10);\n if (heightPercent) {\n rteHeightPercent = this.height;\n }\n }\n var tbHeight = this.getToolbar() ? this.toolbarModule.getToolbarHeight() : 0;\n var rzHandle = this.element.querySelector('.' + classes.CLS_RTE_RES_HANDLE);\n var rzHeight = this.enableResize ? (!isNOU(rzHandle) ? (rzHandle.offsetHeight + 8) : 0) : 0;\n var expandPopHeight = this.getToolbar() ? this.toolbarModule.getExpandTBarPopHeight() : 0;\n if (this.toolbarSettings.type === ToolbarType.Expand && isExpand && target !== 'preview') {\n heightValue = (this.height === 'auto' && rzHeight === 0) ? 'auto' : rteHeight - (tbHeight + expandPopHeight + rzHeight) + 'px';\n topValue = (!this.toolbarSettings.enableFloating) ? expandPopHeight : 0;\n }\n else {\n if (this.height === 'auto' && !(this.element.classList.contains('e-rte-full-screen')) && !this.isResizeInitialized) {\n heightValue = 'auto';\n }\n else {\n heightValue = heightPercent && rteHeightPercent ? rteHeightPercent : rteHeight - (tbHeight + rzHeight) + 'px';\n }\n }\n if (target !== 'windowResize') {\n if (this.iframeSettings.enable) {\n if (heightValue !== 'auto') {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n else {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n if (this.iframeSettings.enable && target === 'sourceCode') {\n var codeElement = select('.' + classes.CLS_RTE_CONTENT, this.element);\n setStyleAttribute(codeElement, { height: heightValue, marginTop: topValue + 'px' });\n }\n if (this.toolbarSettings.enableFloating && this.getToolbar() && !this.inlineMode.enable) {\n var tbWrapHeight = (isExpand ? (tbHeight + expandPopHeight) : tbHeight) + 'px';\n setStyleAttribute(this.getToolbar().parentElement, { height: tbWrapHeight });\n }\n if (rzHeight === 0) {\n this.autoResize();\n }\n };\n /**\n * Retrieves the HTML from RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getHtml = function () {\n return this.serializeValue(this.contentModule.getEditPanel().innerHTML);\n };\n /**\n * Retrieves the Rich Text Editor's XHTML validated HTML content when `enableXhtml` property is enabled.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getXhtml = function () {\n var currentValue = this.value;\n if (!isNOU(currentValue) && this.enableXhtml) {\n currentValue = this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(currentValue);\n }\n return currentValue;\n };\n /**\n * Shows the source HTML/MD markup.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showSourceCode = function () {\n if (this.readonly) {\n return;\n }\n this.notify(events.sourceCode, {});\n };\n /**\n * Returns the maximum number of characters in the Rich Text Editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getCharCount = function () {\n var htmlText = this.editorMode === 'Markdown' ? this.inputElement.value.trim() :\n this.inputElement.textContent.trim();\n var htmlLength;\n if (this.editorMode !== 'Markdown' && htmlText.indexOf('\\u200B') !== -1) {\n htmlLength = htmlText.replace(/\\u200B/g, '').length;\n }\n else {\n htmlLength = htmlText.length;\n }\n return htmlLength;\n };\n /**\n * Show the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(events.showLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(events.showImageDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(events.showTableDialog, {});\n }\n };\n /**\n * Close the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.closeDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(events.closeLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(events.closeImageDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(events.closeTableDialog, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getBaseToolbarObject = function () {\n var tbObj;\n if (this.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n tbObj = this.quickToolbarModule && this.quickToolbarModule.getInlineBaseToolbar();\n }\n else {\n tbObj = this.toolbarModule && this.toolbarModule.getBaseToolbar();\n }\n return tbObj;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getToolbar = function () {\n return this.toolbarModule ? this.toolbarModule.getToolbarElement() : null;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getToolbarElement = function () {\n return this.toolbarModule && this.toolbarModule.getToolbarElement();\n };\n /**\n * @returns {void}\n * getID method\n *\n * @hidden\n\n */\n RichTextEditor.prototype.getID = function () {\n return (this.originalElement.tagName === 'TEXTAREA' ? this.valueContainer.id : this.element.id);\n };\n RichTextEditor.prototype.mouseDownHandler = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n addClass([this.element], [classes.CLS_FOCUS]);\n this.preventDefaultResize(e);\n this.notify(events.mouseDown, { args: e });\n this.clickPoints = { clientX: touch.clientX, clientY: touch.clientY };\n };\n RichTextEditor.prototype.preventImgResize = function (e) {\n if (e.target.nodeName.toLocaleLowerCase() === 'img') {\n e.preventDefault();\n }\n };\n /**\n * preventDefaultResize method\n *\n * @param {FocusEvent} e - specifies the event.\n * @returns {void}\n * @hidden\n\n */\n // eslint-disable-next-line\n RichTextEditor.prototype.preventDefaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().addEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', false, 'false');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', false, 'false');\n }\n };\n // eslint-disable-next-line\n RichTextEditor.prototype.defaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().removeEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', true, 'true');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', true, 'true');\n }\n };\n RichTextEditor.prototype.resizeHandler = function () {\n var isExpand = false;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n return;\n }\n if (this.toolbarSettings.enable && !this.inlineMode.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n isExpand = this.toolbarModule.baseToolbar.toolbarObj.element.classList.contains(classes.CLS_EXPAND_OPEN);\n }\n this.setContentHeight('windowResize', isExpand);\n this.notify(events.windowResize, null);\n };\n RichTextEditor.prototype.scrollHandler = function (e) {\n this.notify(events.scroll, { args: e });\n };\n RichTextEditor.prototype.contentScrollHandler = function (e) {\n this.notify(events.contentscroll, { args: e });\n };\n RichTextEditor.prototype.focusHandler = function (e) {\n if ((!this.isRTE || this.isFocusOut)) {\n this.isRTE = this.isFocusOut ? false : true;\n this.isFocusOut = false;\n addClass([this.element], [classes.CLS_FOCUS]);\n if (this.editorMode === 'HTML') {\n this.cloneValue = (this.inputElement.innerHTML === '


    ') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n }\n else {\n this.cloneValue = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n var active = document.activeElement;\n if (active === this.element || active === this.getToolbarElement() || active === this.contentModule.getEditPanel()\n || ((this.iframeSettings.enable && active === this.contentModule.getPanel()) &&\n e.target && !e.target.classList.contains('e-img-inner')\n && (e.target && e.target.parentElement\n && !e.target.parentElement.classList.contains('e-img-wrap')))\n || closest(active, '.e-rte-toolbar') === this.getToolbarElement()) {\n this.contentModule.getEditPanel().focus();\n if (!isNOU(this.getToolbarElement())) {\n this.getToolbarElement().setAttribute('tabindex', '-1');\n var items = this.getToolbarElement().querySelectorAll('[tabindex=\"0\"]');\n for (var i = 0; i < items.length; i++) {\n items[i].setAttribute('tabindex', '-1');\n }\n }\n }\n this.preventDefaultResize(e);\n this.trigger('focus', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNOU(this.saveInterval) && this.saveInterval > 0 && !this.autoSaveOnIdle) {\n this.timeInterval = setInterval(this.updateValueOnIdle.bind(this), this.saveInterval);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n }\n if (!isNOU(this.getToolbarElement())) {\n var toolbarItem = this.getToolbarElement().querySelectorAll('input,select,button,a,[tabindex]');\n for (var i = 0; i < toolbarItem.length; i++) {\n if ((!toolbarItem[i].classList.contains('e-rte-dropdown-btn') &&\n !toolbarItem[i].classList.contains('e-insert-table-btn')) &&\n (!toolbarItem[i].hasAttribute('tabindex') ||\n toolbarItem[i].getAttribute('tabindex') !== '-1')) {\n toolbarItem[i].setAttribute('tabindex', '-1');\n }\n }\n }\n };\n RichTextEditor.prototype.getUpdatedValue = function () {\n var value;\n if (!isNOU(this.tableModule)) {\n this.tableModule.removeResizeElement();\n }\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (this.editorMode === 'HTML') {\n value = (this.inputElement.innerHTML === '


    ') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n if (getTextArea && getTextArea.style.display === 'block') {\n value = getTextArea.value;\n }\n }\n else {\n value = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n return value;\n };\n RichTextEditor.prototype.updateValueOnIdle = function () {\n if (!isNOU(this.tableModule) && !isNOU(this.inputElement.querySelector('.e-table-box.e-rbox-select'))) {\n return;\n }\n this.setProperties({ value: this.getUpdatedValue() }, true);\n this.valueContainer.value = this.value;\n this.invokeChangeEvent();\n };\n RichTextEditor.prototype.updateIntervalValue = function () {\n clearTimeout(this.idleInterval);\n this.idleInterval = setTimeout(this.updateValueOnIdle.bind(this), 0);\n };\n RichTextEditor.prototype.updateStatus = function (e) {\n if (!isNOU(e.html) || !isNOU(e.markdown)) {\n var status_1 = this.formatter.editorManager.undoRedoManager.getUndoStatus();\n var eventArgs = {\n undo: status_1.undo,\n redo: status_1.redo,\n html: e.html,\n markdown: e.markdown\n };\n this.trigger(events.updatedToolbarStatus, eventArgs);\n }\n };\n RichTextEditor.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var rteElement = closest(target, '.' + classes.CLS_RTE);\n if (!this.element.contains(e.target) && document !== e.target && rteElement !== this.element &&\n !closest(target, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = true;\n this.isRTE = false;\n }\n this.notify(events.docClick, { args: e });\n if (e.detail > 3) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.blurHandler = function (e) {\n var trg = e.relatedTarget;\n if (trg) {\n var rteElement = closest(trg, '.' + classes.CLS_RTE);\n if (rteElement && rteElement === this.element) {\n this.isBlur = false;\n if (trg === this.getToolbarElement()) {\n trg.setAttribute('tabindex', '-1');\n }\n }\n else if (closest(trg, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = false;\n }\n else {\n this.isBlur = true;\n trg = null;\n }\n }\n if (this.isBlur && isNOU(trg)) {\n removeClass([this.element], [classes.CLS_FOCUS]);\n this.notify(events.focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.notify(events.toolbarRefresh, { args: e, documentNode: document });\n this.invokeChangeEvent();\n this.isFocusOut = true;\n this.isBlur = false;\n dispatchEvent(this.valueContainer, 'focusout');\n this.defaultResize(e);\n this.trigger('blur', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n }\n else {\n this.isRTE = true;\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.contentChanged = function () {\n if (this.autoSaveOnIdle) {\n if (!isNOU(this.saveInterval)) {\n clearTimeout(this.timeInterval);\n this.timeInterval = setTimeout(this.updateIntervalValue.bind(this), this.saveInterval);\n }\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.invokeChangeEvent = function () {\n var currentValue;\n if (this.enableXhtml) {\n currentValue = this.getXhtml();\n }\n else {\n currentValue = this.value;\n }\n var eventArgs = {\n value: currentValue\n };\n if (this.value !== this.cloneValue) {\n this.trigger('change', eventArgs);\n this.cloneValue = this.value;\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.wireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.add(element, 'scroll', this.scrollHandler, this);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.add(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler, this);\n }\n };\n RichTextEditor.prototype.wireContextEvent = function () {\n if (this.quickToolbarSettings.showOnRightClick) {\n EventHandler.add(this.inputElement, 'contextmenu', this.contextHandler, this);\n if (Browser.isDevice) {\n this.touchModule = new EJ2Touch(this.inputElement, { tapHold: this.touchHandler.bind(this), tapHoldThreshold: 500 });\n }\n }\n };\n RichTextEditor.prototype.unWireContextEvent = function () {\n EventHandler.remove(this.inputElement, 'contextmenu', this.contextHandler);\n if (Browser.isDevice && this.touchModule) {\n this.touchModule.destroy();\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.unWireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.remove(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler);\n }\n };\n RichTextEditor.prototype.touchHandler = function (e) {\n this.notifyMouseUp(e.originalEvent);\n this.triggerEditArea(e.originalEvent);\n };\n RichTextEditor.prototype.contextHandler = function (e) {\n var closestElem = closest(e.target, 'a, table, img');\n if (this.inlineMode.onSelection === false || (!isNOU(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A'))) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.resetHandler = function () {\n var defaultValue = this.valueContainer.defaultValue.trim();\n this.setProperties({ value: defaultValue === '' ? null : (this.isBlazor() ? this.defaultResetValue : defaultValue) });\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.autoResize = function () {\n var _this = this;\n if (this.height === 'auto') {\n if (this.editorMode === 'Markdown') {\n setTimeout(function () {\n _this.setAutoHeight(_this.inputElement);\n }, 0);\n }\n else if (this.iframeSettings.enable) {\n var iframeElement_1 = this.element.querySelector('#' + this.getID() + '_rte-view');\n setTimeout(function () {\n _this.setAutoHeight(iframeElement_1);\n }, 100);\n this.inputElement.style.overflow = 'hidden';\n }\n }\n else {\n this.inputElement.style.overflow = null;\n }\n };\n RichTextEditor.prototype.setAutoHeight = function (element) {\n if (!isNOU(element)) {\n element.style.height = '';\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n };\n RichTextEditor.prototype.wireEvents = function () {\n this.element.addEventListener('focusin', this.onFocusHandler, true);\n this.element.addEventListener('focusout', this.onBlurHandler, true);\n this.on(events.contentChanged, this.contentChanged, this);\n this.on(events.resizeInitialized, this.updateResizeFlag, this);\n this.on(events.updateTbItemsStatus, this.updateStatus, this);\n if (this.readonly && this.enabled) {\n return;\n }\n this.bindEvents();\n };\n RichTextEditor.prototype.restrict = function (e) {\n if (this.maxLength >= 0) {\n var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :\n e.currentTarget.textContent.trim();\n var array = [8, 16, 17, 37, 38, 39, 40, 46, 65];\n var arrayKey = void 0;\n for (var i = 0; i <= array.length - 1; i++) {\n if (e.which === array[i]) {\n if (e.ctrlKey && e.which === 65) {\n return;\n }\n else if (e.which !== 65) {\n arrayKey = array[i];\n return;\n }\n }\n }\n if ((element.length >= this.maxLength && this.maxLength !== -1) && e.which !== arrayKey) {\n e.preventDefault();\n }\n }\n };\n RichTextEditor.prototype.bindEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyDown.bind(this), keyConfigs: __assign({}, this.formatter.keyConfig, this.keyConfig), eventName: 'keydown'\n });\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetHandler, this);\n }\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n EventHandler.add(this.inputElement, 'paste', this.onPaste, this);\n EventHandler.add(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30), this);\n EventHandler.add(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler, this);\n this.wireContextEvent();\n this.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown, this);\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.add(this.inputElement, 'focusin', this.focusHandler, this);\n EventHandler.add(this.inputElement, 'focusout', this.blurHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown, this);\n }\n this.wireScrollElementsEvents();\n };\n RichTextEditor.prototype.onIframeMouseDown = function (e) {\n this.isBlur = false;\n this.notify(events.iframeMouseDown, e);\n };\n RichTextEditor.prototype.editorKeyDown = function (e) {\n switch (e.event.action) {\n case 'copy':\n this.onCopy();\n break;\n case 'cut':\n this.onCut();\n break;\n }\n if (e.callBack && (e.event.action === 'copy' || e.event.action === 'cut' || e.event.action === 'delete')) {\n e.callBack({\n requestType: e.event.action,\n editorMode: 'HTML',\n event: e.event\n });\n }\n };\n RichTextEditor.prototype.unWireEvents = function () {\n this.element.removeEventListener('focusin', this.onFocusHandler, true);\n this.element.removeEventListener('focusout', this.onBlurHandler, true);\n this.off(events.contentChanged, this.contentChanged);\n this.off(events.resizeInitialized, this.updateResizeFlag);\n this.off(events.updateTbItemsStatus, this.updateStatus);\n if (this.readonly && this.enabled) {\n return;\n }\n this.unbindEvents();\n };\n RichTextEditor.prototype.unbindEvents = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetHandler);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n EventHandler.remove(this.inputElement, 'paste', this.onPaste);\n EventHandler.remove(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30));\n EventHandler.remove(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler);\n this.unWireContextEvent();\n if (this.formatter) {\n this.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown);\n }\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.remove(this.inputElement, 'focusin', this.focusHandler);\n EventHandler.remove(this.inputElement, 'focusout', this.blurHandler);\n EventHandler.remove(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler);\n EventHandler.remove(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown);\n }\n this.unWireScrollElementsEvents();\n };\n __decorate([\n Complex({}, ToolbarSettings)\n ], RichTextEditor.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, QuickToolbarSettings)\n ], RichTextEditor.prototype, \"quickToolbarSettings\", void 0);\n __decorate([\n Complex({}, PasteCleanupSettings)\n ], RichTextEditor.prototype, \"pasteCleanupSettings\", void 0);\n __decorate([\n Complex({}, IFrameSettings)\n ], RichTextEditor.prototype, \"iframeSettings\", void 0);\n __decorate([\n Complex({}, ImageSettings)\n ], RichTextEditor.prototype, \"insertImageSettings\", void 0);\n __decorate([\n Complex({}, TableSettings)\n ], RichTextEditor.prototype, \"tableSettings\", void 0);\n __decorate([\n Property(0)\n ], RichTextEditor.prototype, \"floatingToolbarOffset\", void 0);\n __decorate([\n Complex({}, InlineMode)\n ], RichTextEditor.prototype, \"inlineMode\", void 0);\n __decorate([\n Complex({}, FileManagerSettings)\n ], RichTextEditor.prototype, \"fileManagerSettings\", void 0);\n __decorate([\n Property('100%')\n ], RichTextEditor.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableResize\", void 0);\n __decorate([\n Property({})\n ], RichTextEditor.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"autoSaveOnIdle\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableHtmlEncode\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableXhtml\", void 0);\n __decorate([\n Property('auto')\n ], RichTextEditor.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"value\", void 0);\n __decorate([\n Property(30)\n ], RichTextEditor.prototype, \"undoRedoSteps\", void 0);\n __decorate([\n Property(300)\n ], RichTextEditor.prototype, \"undoRedoTimer\", void 0);\n __decorate([\n Property('HTML')\n ], RichTextEditor.prototype, \"editorMode\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"keyConfig\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"showCharCount\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableTabKey\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableAutoUrl\", void 0);\n __decorate([\n Property(-1)\n ], RichTextEditor.prototype, \"maxLength\", void 0);\n __decorate([\n Complex({}, Format)\n ], RichTextEditor.prototype, \"format\", void 0);\n __decorate([\n Complex({}, NumberFormatList)\n ], RichTextEditor.prototype, \"numberFormatList\", void 0);\n __decorate([\n Complex({}, BulletFormatList)\n ], RichTextEditor.prototype, \"bulletFormatList\", void 0);\n __decorate([\n Complex({}, FontFamily)\n ], RichTextEditor.prototype, \"fontFamily\", void 0);\n __decorate([\n Complex({}, FontSize)\n ], RichTextEditor.prototype, \"fontSize\", void 0);\n __decorate([\n Complex({}, FontColor)\n ], RichTextEditor.prototype, \"fontColor\", void 0);\n __decorate([\n Complex({}, BackgroundColor)\n ], RichTextEditor.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(10000)\n ], RichTextEditor.prototype, \"saveInterval\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeQuickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarStatusUpdate\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"updatedToolbarStatus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterImageDelete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforePasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterPasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageDrop\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"formatter\", void 0);\n RichTextEditor = __decorate([\n NotifyPropertyChanges\n ], RichTextEditor);\n return RichTextEditor;\n}(Component));\nexport { RichTextEditor };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { RichTextEditor } from '@syncfusion/ej2-richtexteditor';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `RichTextEditor` represents the react RichTextEditor.\n * ```tsx\n * \n * ```\n */\nvar RichTextEditorComponent = /** @class */ (function (_super) {\n __extends(RichTextEditorComponent, _super);\n function RichTextEditorComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n RichTextEditorComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return RichTextEditorComponent;\n}(RichTextEditor));\nexport { RichTextEditorComponent };\napplyMixins(RichTextEditorComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar'\n && !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n var operators = (column.filter && column.filter.operator) ? column.filter.operator : 'equal';\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[i].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n }\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[optr])) ?\n this.parent.filterSettings.operators[optr] : this.customFilterOperators[optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue\n });\n this.dropOptr.addEventListener(literals.open, this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[i].value === col.filter.operator) {\n selValue = this.optrData[i].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals.open, this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.actObj = this.getAutoCompleteOptions(args);\n this.actObj.appendTo(this.instance);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n foreignColumnQuery = new Query();\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.query.clone(),\n sortOrder: 'Ascending',\n cssClass: 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue')\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals.open, this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n return autoComplete;\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals.open, this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals.open, this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.text = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals.open, this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals.open, this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals.open, this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true, cssClass: 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'), cssClass: 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.renderFilterUI(target, column);\n this.parent.notify(events.filterDialogCreated, {});\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n var model = [];\n for (var i = 0; i < options[type].length; i++) {\n if (options[type][i].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[type][i].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter ? 'e-res-contextmenu-wrapper' : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj.open(height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj.open(pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n this.parent.notify(events.filterDialogCreated, {});\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n row.querySelector('#' + _this.options.column.field + '-xlfl-frstvalue').focus();\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true, cssClass: 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'), cssClass: 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: firstValue,\n type: this.options.type\n });\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), firstValue, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: secondValue,\n type: this.options.type\n });\n // eslint-disable-next-line max-len\n mPredicate = mPredicate[predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals.open, this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table' });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({ label: this.getLocalizedLabel('AND'), name: 'default', checked: true, enableRtl: this.parent.enableRtl });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({ label: this.getLocalizedLabel('OR'), name: 'default', enableRtl: this.parent.enableRtl });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[predIndex] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ? this.options.column.columnData[indx][columnObj.foreignKeyValue] :\n fltrPredicates[indx].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column.columnData[indx][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[i].ej2_instances[0]) {\n dropdownlist[i].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[i], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[index] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].uid === col.uid || (col.isForeignColumn() && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length && this.parent.enablePersistence) {\n this.initialEnd();\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime') && filterValue &&\n filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[i]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[i].uid);\n var filterValue = this.filterSettings.columns[i].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[i].field;\n this.values[key] = this.filterSettings.columns[i].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[i].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[i].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[i].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[i].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[i].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[i].removeAttribute('aria-filtered');\n fltrIconElement[i].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[i].uid = cols[i].uid || this.parent.getColumnByField(cols[i].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[i]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[i].uid = cols[i].uid || this_1.parent.getColumnByField(cols[i].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[i]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[field];\n }\n }\n while (len_1--) {\n if (cols[len_1].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar') {\n var iconClass = this_1.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[field]) {\n delete this_1.actualPredicate[field];\n }\n if (this_1.values[field]) {\n delete this_1.values[field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[index].uid) || gObj.grabColumnByFieldFromAllCols(columns[index].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), column.type) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[i]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (value.charAt(0) === '*') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(value.length - 1) === '%') {\n this.value = this.value.slice(0, -1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(0) === '%') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.endsWith;\n }\n else {\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n closest(e.target, 'div').querySelector('.e-filterbaroperator').focus();\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[i].field === this.filterSettings.columns[j].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[i].field) ||\n getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[i].field;\n if (!this.parent.getColumnByField(cols[i].field)) {\n fieldName = getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[i].operator, cols[i].value, cols[i].type, cols[i].predicate, cols[i].matchCase, cols[i].ignoreAccent, cols[i].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[fieldName]) {\n this.actualPredicate[fieldName].push(obj);\n }\n else {\n this.actualPredicate[fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n if (this.parent.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (this.parent.getColumnByField(fieldName)) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele = 16; // scrollbar element height is 16.\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.opposedPosition) {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.opposedPosition) {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime':\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /*! Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /*! Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n isInside = this.findAxisPosition(axis);\n if (axis.orientation === 'Horizontal') {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, axis.plotOffset, 0, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0) {\n this.drawXAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawXAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawXAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n else {\n axis.updateCrossValue();\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, i, 0, axis.plotOffset, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0) {\n this.drawYAxisGridLine(axis, i, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this.drawYAxisLabels(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisBorder(axis, i, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this.drawYAxisTitle(axis, i, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (chart.scrollBarModule && ((chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(chart, axis);\n }\n }\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI || chart.visibleSeries[0].type.indexOf('Bar') >= 0)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX) + ' ' + (rect.y - plotY) +\n ' L ' + (rect.x + rect.width + plotX) + ' ' + (rect.y + rect.height + plotY),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var tickSize = axis.opposedPosition ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.opposedPosition ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n padding = (axis.opposedPosition) ? padding : -padding;\n var defaultAnchor = ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) ? 'end' : 'start';\n defaultAnchor = chart.isRtlEnabled ? ((axis.opposedPosition) ? 'end' : 'start') : defaultAnchor;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n pointX = isLabelInside ? (rect.x - padding) : (rect.x + padding + scrollBarHeight);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = ((elementSize.height / 4) * 3) + 3;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? (pointY + textPadding) : pointY + (elementSize.height / 4)));\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointY = pointY;\n }\n pointX = isAxisBreakLabel ? this.getAxisLabelXvalue(pointX, axis, elementSize.width) : pointX;\n var anchor = isAxisBreakLabel ? this.getAnchor(axis) : defaultAnchor;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor, axis.visibleLabels[i].text);\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) ||\n (((i === len - 1) || (axis.isInversed && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (axis.isInversed && i === 0)) && (options.y - elementSize.height * 0.5 < rect.y)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n }\n textElement(chart.renderer, options, axis.labelStyle, axis.labelStyle.color || chart.themeStyle.axisLabel, labelElement, false, chart.redraw, true, true, null, null, null, null, chart.enableCanvas);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n scrollBarHeight = (axis.opposedPosition ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((axis.opposedPosition && axis.labelPosition === 'Inside') || (!axis.opposedPosition\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isInversed ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var labelRotation = (axis.opposedPosition) ? 90 : -90;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = axis.opposedPosition ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n var x = rect.x + padding;\n var y = rect.y + rect.height * 0.5;\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y - axis.labelPadding - titleSize, 'middle', axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('tabindex', axis.tabIndex.toString());\n element.setAttribute('aria-label', axis.description || axis.title);\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var tickSize = (axis.opposedPosition) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (axis.opposedPosition) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.opposedPosition ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks') {\n length += 1;\n }\n //Gridlines\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.opposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((axis.isInversed ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((axis.isInversed ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.opposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var previousEnd = axis.isInversed ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Center') {\n // eslint-disable-next-line no-self-assign\n pointX = pointX;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (elementSize.height) : (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n if (axis.edgeLabelPlacement && (angle === 0)) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (axis.isInversed && i === 0)) && (options.x + width > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (axis.isInversed && i === len - 1)) && options.x < rect.x) {\n intervalLength -= (rect.x - options.x);\n options.x = pointX = rect.x;\n }\n else if ((i === len - 1 || (axis.isInversed && i === 0)) && ((options.x + width) > rect.x + rect.width)) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim') {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else {\n intervalLength = width;\n }\n options.x = pointX = rect.x + rect.width - intervalLength;\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!axis.isInversed ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = axis.isInversed ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = axis.isInversed ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = axis.isInversed ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = axis.isInversed ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2) + 10));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] && isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n // label Rotataion calculation (End)\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabel, labelElement, (axis.opposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, null, null, label.size, isRotatedLabelIntersect, chart.enableCanvas);\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var startX = void 0;\n var startY = axisRect.y + ((axis.opposedPosition ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((axis.opposedPosition && axis.labelPosition === 'Inside') ||\n (!axis.opposedPosition && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isInversed ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x) {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.setAttribute('style', 'pointer-events: none');\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, true, 'x', 'y', null, direction, true);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.opposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, rect.x + rect.width * 0.5, rect.y + padding, 'middle', axis.titleCollection);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitle, parent, null, null, null, null, null, null, null, null, chart.enableCanvas);\n element.setAttribute('aria-label', axis.description || axis.title);\n element.setAttribute('tabindex', axis.tabIndex.toString());\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray) {\n if (dashArray === void 0) { dashArray = null; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + gridIndex);\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + gridIndex, 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true);\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable valid-jsdoc */\nimport { Property, ChildProperty, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, EmptyPointSettings, CornerRadius, Connector, DragSettings } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { sort, getVisiblePoints, setRange } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * Configures the data label in the series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * Configures the marker in the series.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Circle')\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * Points model for the series.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** point symbol location */\n this.symbolLocations = null;\n /** point region */\n this.regions = null;\n /** point percentage value */\n this.percentage = null;\n /** point region data */\n this.regionData = null;\n /** To know the point is selected */\n this.isSelect = false;\n /** point marker */\n this.marker = {\n visible: false\n };\n /**\n * To identify point y value with in the range.\n *\n * @private\n */\n this.isPointInRange = true;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Defines the behavior of the Trendlines\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('0')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * Configures Error bar in series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * Error bar settings\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior of Series and Technical Indicators\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The DataSource field that contains the x value.\n * It is applicable for series and technical indicators\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n this.currentViewData = sort(extend([], this.currentViewData, null, true), [this.yName], true);\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = Object.keys(this.currentViewData).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n this.pushCategoryData(point, i, point.x);\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.chart.isBlazor ? this.pushCategoryData(point, i, Date.parse(point.x.toString()).toString()) :\n this.pushCategoryData(point, i, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n }\n else {\n point.visible = false;\n }\n i++;\n }\n }\n else {\n while (i < len) {\n point = this.dataPoint(i, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, i);\n this.setEmptyPoint(point, i);\n i++;\n }\n }\n if (this instanceof Series) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n }\n };\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /** @private */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData;\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData[i]);\n point.high = getObjectValueByMappingString(this.high, currentViewData[i]);\n point.low = getObjectValueByMappingString(this.low, currentViewData[i]);\n point.open = getObjectValueByMappingString(this.open, currentViewData[i]);\n point.close = getObjectValueByMappingString(this.close, currentViewData[i]);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData[i]);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData[i]);\n if (this instanceof Series) {\n point.y = getObjectValueByMappingString(this.yName, currentViewData[i]);\n point.size = getObjectValueByMappingString(this.size, currentViewData[i]);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData[i]);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData[i]);\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.isAdvancedColorSupported()) {\n if (this.colorName && this.colorName.length > 0) {\n point.colorValue = getObjectValueByMappingString(this.colorName, currentViewData[i]);\n }\n else {\n point.colorValue = getObjectValueByMappingString(this.yName, currentViewData[i]);\n }\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n return true;\n }\n return false;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * To set empty point value based on empty point mode\n *\n * @private\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0;\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0) ||\n (seriesMinY.toString() === '')) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * To get Y min max for the provided point seriesType XY\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series\n *\n * @private\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'SplineRangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /** @private */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.labels.indexOf(pointX) < 0) {\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.labels.indexOf(pointX);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.xAxis.labels[index] ? this.xAxis.labels[index] += ', ' + pointX :\n this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * To find average of given property\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * To find the control points for spline.\n *\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * Configures the series in charts.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.lowDrawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType !== 'Category') {\n return null;\n }\n this.xAxis.labels = [];\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * To get the column type series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * To calculate the stacked values.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var stackingSeies = [];\n var stackedValues = [];\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ? stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf(\"Column\") !== -1 || series.type.indexOf(\"Bar\") !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, startValues);\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_2 = seriesCollection; _i < seriesCollection_2.length; _i++) {\n var series = seriesCollection_2[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /** @private */\n Series.prototype.renderSeries = function (chart) {\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * To create seris element.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Scatter' || this.type === 'Bubble') ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter') {\n markerHeight = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (this.marker.height + explodeValue) / 2;\n markerWidth = (chart.primaryYAxis.maximum || chart.primaryXAxis.maximum) ? 0 : (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: this.clipRect.width + markerWidth * 2,\n height: this.clipRect.height + markerHeight * 2\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (!this.chart.enableCanvas || this.type === 'Scatter' || this.type === 'Bubble') {\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n /**\n * To append the series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n if (this.type === 'Scatter' || this.type === 'Bubble') {\n appendChildElement(false, chart.seriesElements, this.seriesElement, redraw);\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * To perform animation for chart series.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (this.animation.enable && chart.animateSeries) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * To set border color for empty point\n *\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property('#2ecd71')\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * Marker Module used to render the marker for line type series.\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n return _this;\n }\n /**\n * @hidden\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart)) {\n this.markerMove(true);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((!chart.crosshair.enable || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, commonXvalues);\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && this.previousPoints[0].point !== this.currentPoints[0].point)) {\n if (this.previousPoints.length > 0) {\n this.removeHighlightedMarker();\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (!data_1.series.isRectSeries || data_1.point.marker.visible) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _b = 0, _c = this.currentPoints; _b < _c.length; _b++) {\n var data_1 = _c[_b];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n this.markerExplode = +setTimeout(function () {\n _this.removeHighlightedMarker();\n }, 2000);\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape;\n if (shape === 'None') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 5, (marker.height || seriesMarker.height) + 5);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), null, null);\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', 'EJ2-Trackball');\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n this.chart.svgObject.appendChild(symbol);\n }\n };\n /**\n * @hidden\n */\n MarkerExplode.prototype.removeHighlightedMarker = function () {\n var elements = document.getElementsByClassName('EJ2-Trackball');\n for (var i = 0, len = elements.length; i < len; i++) {\n remove(elements[0]);\n }\n this.previousPoints = [];\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\n/**\n * Marker module used to render the marker for line type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || (isBoxPlot ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' +\n (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn'\n || series.type === 'SplineRangeArea') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, null);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: series.clipRect.width + markerWidth * 2,\n height: series.clipRect.height + markerHeight * 2\n });\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isInversed ? region.width : 0;\n }\n else {\n y += series.yAxis.isInversed ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Animates the marker.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.type === 'SplineRangeArea') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n markerAnimate(markerElements[j], delay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], delay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-param */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { Connector } from '../../common/model/base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * Defines how to represent the market trend using technical indicators\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /** @private */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { print as printWindow, createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { getElement, removeElement } from '../utils/helper';\nimport { beforePrint, afterExport } from '../model/constants';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap, SizeF, PdfStandardFont, PdfPageTemplateElement, PdfSolidBrush, PdfColor } from '@syncfusion/ej2-pdf-export';\nvar ExportUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function ExportUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements\n *\n * @param elements\n */\n ExportUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n ExportUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * To export the file as image/svg format\n *\n * @param type\n * @param fileName\n */\n ExportUtils.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var _this = this;\n var controlValue = this.getControlsValue(controls, isVertical);\n width = width ? width : controlValue.width;\n height = height ? height : controlValue.height;\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n var image;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': width.toString(),\n 'height': height.toString()\n }\n });\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var svgData = '' +\n controlValue.svg.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (Browser.info.name === 'msie') {\n var svg = new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'application/octet-stream' });\n window.navigator.msSaveOrOpenBlob(svg, fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n this.triggerDownload(fileName, type, url, isDownload);\n }\n }\n else if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n image = canvas.toDataURL();\n if (type === 'PDF') {\n this.exportPdf(canvas, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n this.doexport(type, image, fileName);\n }\n }\n else {\n var image_1 = new Image();\n var ctx_1 = element.getContext('2d');\n image_1.onload = (function () {\n ctx_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (type === 'PDF') {\n _this.exportPdf(element, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(element.toBlob(null), fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n _this.triggerDownload(fileName, type, element.toDataURL('image/' + type.toLowerCase()), isDownload);\n }\n }\n });\n image_1.src = url;\n }\n if (!isCanvas) {\n removeElement(document.getElementById(this.control.element.id + '_canvas'));\n }\n };\n /**\n * To get data url for charts.\n *\n * @param chart\n */\n ExportUtils.prototype.getDataUrl = function (chart) {\n var controlValue = this.getControlsValue([chart]);\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': controlValue.width.toString(),\n 'height': controlValue.height.toString()\n }\n });\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return { element: canvas, dataUrl: canvas.toDataURL() };\n }\n else {\n var image_2 = new Image();\n var ctx_2 = element.getContext('2d');\n image_2.onload = (function () {\n ctx_2.drawImage(image_2, 0, 0);\n window.URL.revokeObjectURL(url);\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return argsData.dataUrl;\n });\n image_2.src = url;\n return { element: element, blobUrl: url };\n }\n };\n /**\n * To trigger the download element\n *\n * @param fileName\n * @param type\n * @param url\n */\n ExportUtils.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n /**\n * To get the maximum size value\n *\n * @param controls\n * @param name\n */\n // eslint-disable-next-line max-len\n ExportUtils.prototype.getControlsValue = function (controls, isVertical) {\n var width = 0;\n var height = 0;\n var isCanvas = this.control.enableCanvas;\n var svgObject = new SvgRenderer('').createSvg({\n id: 'Svg_Export_Element',\n width: 200, height: 200\n });\n controls.map(function (control) {\n var svg = control.svgObject.cloneNode(true);\n var groupEle = control.renderer.createGroup({\n style: (isNullOrUndefined(isVertical) || isVertical) ? 'transform: translateY(' + height + 'px)' :\n 'transform: translateX(' + width + 'px)'\n });\n var backgroundColor = svg.childNodes[0].getAttribute('fill');\n if ((control.theme === 'Tailwind' || control.theme === 'TailwindDark')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n svg.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n if (!isCanvas) {\n groupEle.appendChild(svg);\n }\n width = (isNullOrUndefined(isVertical) || isVertical) ? Math.max(control.availableSize.width, width) :\n width + control.availableSize.width;\n height = (isNullOrUndefined(isVertical) || isVertical) ? height + control.availableSize.height :\n Math.max(control.availableSize.height, height);\n if (!isCanvas) {\n svgObject.appendChild(groupEle);\n }\n });\n if (!isCanvas) {\n svgObject.setAttribute('width', width + '');\n svgObject.setAttribute('height', height + '');\n }\n return {\n 'width': width,\n 'height': height,\n 'svg': svgObject\n };\n };\n ExportUtils.prototype.createCanvas = function () {\n var chart = this.control;\n this.canvasRender(true, chart);\n var canvas = chart.svgObject;\n this.canvasRender(false, chart);\n return canvas;\n };\n /**\n * To convert svg chart into canvas chart to fix export issue in IE\n * We cant export svg to other formats in IE\n *\n * @param enableCanvas\n * @param chart\n * @param enableCanvas\n * @param chart\n */\n ExportUtils.prototype.canvasRender = function (enableCanvas, chart) {\n chart.enableCanvas = enableCanvas;\n chart['preRender']();\n chart['render']();\n };\n // eslint-disable-next-line max-len\n ExportUtils.prototype.exportPdf = function (element, orientation, width, height, isDownload, fileName, header, footer) {\n var document = new PdfDocument();\n var margin = document.pageSettings.margins;\n var pdfDefaultWidth = document.pageSettings.width;\n var pdfDefaultHeight = document.pageSettings.height;\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n var exactWidth = (pdfDefaultWidth < width) ? (width + margin.left + margin.right) : pdfDefaultWidth;\n var exactHeight = (pdfDefaultHeight < height) ? (height + margin.top + margin.bottom) : pdfDefaultHeight;\n if (header !== undefined) {\n var font = new PdfStandardFont(1, header.fontSize || 15);\n var pdfHeader = new PdfPageTemplateElement(exactWidth, 40);\n pdfHeader.graphics.drawString(header.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), header.x, header.y, null);\n document.template.top = pdfHeader;\n }\n if (footer !== undefined) {\n var font = new PdfStandardFont(1, footer.fontSize || 15);\n var pdfFooter = new PdfPageTemplateElement(exactWidth, 40);\n pdfFooter.graphics.drawString(footer.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), footer.x, footer.y, null);\n document.template.bottom = pdfFooter;\n }\n document.pageSettings.size = new SizeF(exactWidth, exactHeight);\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, width, height);\n if (isDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n };\n ExportUtils.prototype.doexport = function (type, image, fileName) {\n var images = [];\n var fileType = type || 'JPG';\n images = [image];\n this.exportImage(images, fileName, fileType, image);\n };\n ExportUtils.prototype.exportImage = function (images, fileName, fileType, image) {\n var buffers = [];\n var length = (!(images instanceof HTMLElement)) ? images.length : 0;\n for (var g = 0; g < length; g++) {\n image = images[g];\n image = image.replace(/^data:[a-z]*;,/, '');\n var image1 = image.split(',');\n var byteString = atob(image1[1]);\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n buffers.push(buffer);\n }\n for (var j = 0; j < buffers.length; j++) {\n var b = new Blob([buffers[j]], { type: 'application/octet-stream' });\n if (Browser.info.name === 'msie') {\n window.navigator.msSaveOrOpenBlob(b, fileName + '.' + fileType.toLocaleLowerCase());\n }\n }\n };\n return ExportUtils;\n}());\nexport { ExportUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, Theme, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, ChartArea, Font, Indexes, TooltipSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { ExportUtils } from '../common/utils/export';\n/**\n * Configures the RangeColorSetting in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Configures the crosshair in the chart.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"verticalLineColor\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"horizontalLineColor\", void 0);\n __decorate([\n Property(1)\n ], CrosshairSettings.prototype, \"opacity\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Represents the Chart control.\n * ```html\n *
    \n * \n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n _this.chartid = 57723;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n *\n * @param elementId\n * Return the proper ID when the special character exist in the ID\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z ]+$/;\n var numberRegex = /^[0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n var start = 0;\n if (numberRegex.test(elementId[0])) {\n childElementId += ('\\\\3' + elementId[0]);\n start = 1;\n }\n for (var i = start; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1 && !numberRegex.test(elementId[i])) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '${point.x}';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : ${point.high}
    Low :' +\n ' ${point.low}
    Open : ${point.open}
    Close : ${point.close}';\n if (this.stockChart.series[0].volume !== '') {\n this.tooltip.format += '
    Volume : ${point.volume}';\n }\n }\n this.animateSeries = false;\n }\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.createChartSvg();\n this.setTheme();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Animate the series bounds.\n *\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n };\n /**\n * To calcualte the stack values\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n series.position = series.rectCount = undefined;\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n element.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = (this.series[0].type === 'Scatter' || this.series[0].type === 'Bubble') ?\n this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' }) :\n this.renderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.setAttribute('style', 'position: relative');\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.setAttribute('style', 'position: absolute; pointer-events: none');\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n if (this.enableCanvas) {\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries(item);\n }\n item.renderSeries(this);\n }\n }\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements) {\n return;\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(appendClipElement(this.redraw, options, this.renderer));\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function (item) {\n var svgElement;\n var divElement;\n if ((item.type === 'Bubble' || item.type === 'Scatter')) {\n svgElement = !svgElement ? this.svgRenderer.createSvg({ id: this.element.id + '_series_svg',\n width: this.availableSize.width, height: this.availableSize.height }) : svgElement;\n divElement = !divElement ? this.createElement('div', { id: this.element.id + '_series' }) : divElement;\n divElement.setAttribute('style', 'position: absolute');\n var mainElement = document.getElementById(this.element.id + '_Secondary_Element');\n divElement.appendChild(svgElement);\n mainElement.appendChild(divElement);\n }\n svgElement = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\n svgElement : this.svgObject;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var canvas = (this.enableCanvas && (item.type === 'Bubble' || item.type === 'Scatter')) ?\n false : this.enableCanvas;\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if (!this.redraw && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here\n *\n * @private\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var titleWidth = 0;\n var padding = 15;\n var left = margin.left;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width);\n titleHeight = (measureText(this.title, this.titleStyle).height * this.titleCollection.length) + padding;\n if (this.subTitle) {\n var maxWidth = 0;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle).height * this.subTitleCollection.length) +\n padding;\n }\n }\n var top = margin.top + subTitleHeight + titleHeight + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === \"Top\") {\n top += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === \"Left\") {\n left += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Handles the print method for chart control.\n */\n Chart.prototype.print = function (id) {\n var exportChart = new ExportUtils(this);\n exportChart.print(id);\n };\n /**\n * Defines the trendline initialization\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis\n *\n * @private\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /** @private */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName === null && series.yAxisName !== null) ||\n (series.xAxisName !== null && series.yAxisName === null) ||\n (series.xAxisName !== null && series.yAxisName !== null))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n if (this.title) {\n var alignment = this.titleStyle.textAlignment;\n var getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n var elementSize = measureText(this.title, this.titleStyle);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_ChartTitle', titlePositionX(rect, this.titleStyle), this.margin.top + ((elementSize.height) * 3 / 4), getAnchor, this.titleCollection, '', 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.title);\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var anchor = function (alignment) {\n return alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n };\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, anchor(this.subTitleStyle.textAlignment), this.subTitleCollection, '', 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartTitle, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas);\n if (element) {\n element.setAttribute('aria-label', this.description || this.subTitle);\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n };\n Chart.prototype.renderBorder = function () {\n if (this.stockChart) {\n return;\n }\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5, width * 0.5, this.availableSize.width - width, this.availableSize.height - width));\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect);\n this.htmlObject = this.renderer.drawRectangle(rect);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n this.series.splice(index, 1);\n this.refresh();\n };\n /**\n * To Clear all series for the chart\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /*! Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /*! Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.crosshair.enable || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n };\n /**\n * Finds the orientation.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * To find mouse x, y for aligned chart element svg position\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n }\n };\n /**\n * Export method for the chart.\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this.isBlazor ? {} : this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the mouse click on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n this.trigger(chartMouseClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.clickCount++;\n var timeInterval = 0;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY });\n this.isChartDrag = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Method to set the annotation content dynamically for chart.\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart\n */\n Chart.prototype.setTheme = function () {\n /*! Set theme */\n this.themeStyle = getThemeColor(this.theme);\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]}\n * @private\n */\n /* eslint-disable */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable;\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan || zooming.enableScrollbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None') {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'SplineRangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || !isLine ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n * @return {boolean}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {boolean}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Get visible series by index\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Fix for live data update flicker issue\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n if (!this.delayRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n refreshBounds = this.axisChange(newProp.primaryXAxis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n break;\n case 'primaryYAxis':\n refreshBounds = this.axisChange(newProp.primaryYAxis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n refreshBounds = refreshBounds || this.axisChange(newProp.axes[index]);\n if (!newProp.axes[index].crosshairTooltip) {\n refreshBounds = true;\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series':\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (series && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close ||\n series.fill || series.name || series.marker || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n if (this.selectionModule) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.rotatedDataLabelCollections = [];\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex(Theme.chartTitleFont, Font)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex(Theme.chartSubTitleFont, Font)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Chart } from '@syncfusion/ej2-charts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents react Chart Component\n * ```tsx\n * \n * ```\n */\nvar ChartComponent = /** @class */ (function (_super) {\n __extends(ChartComponent, _super);\n function ChartComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'seriesCollection': { 'series': { 'trendlines': 'trendline', 'segments': 'segment' } }, 'axes': { 'axis': { 'stripLines': 'stripLine', 'multiLevelLabels': { 'multiLevelLabel': { 'categories': 'category' } } } }, 'rows': 'row', 'columns': 'column', 'rangeColorSettings': 'rangeColorSetting', 'annotations': 'annotation', 'selectedDataIndexes': 'selectedDataIndex', 'indicators': 'indicator' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ChartComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ChartComponent;\n}(Chart));\nexport { ChartComponent };\napplyMixins(ChartComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, setStyleAttribute, ChildProperty, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n *
    \n *
    Left Pane
    \n *
    Center Pane
    \n *
    Right Pane
    \n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.allPanes = [];\n _this.paneOrder = [];\n _this.separatorOrder = [];\n _this.allBars = [];\n _this.previousCoordinates = {};\n _this.currentCoordinates = {};\n _this.updatePrePaneInPercentage = false;\n _this.updateNextPaneInPercentage = false;\n _this.panesDimensions = [];\n _this.border = 0;\n _this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n _this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n _this.iconsDelay = 300;\n _this.templateElement = [];\n _this.collapseFlag = false;\n _this.expandFlag = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.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 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.preRender = function () {\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n if (!this.checkBlazor()) {\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation_1 = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation_1);\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n if (!this.checkBlazor()) {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n }\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n if (!this.checkBlazor()) {\n this.setRTL(this.enableRtl);\n }\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.checkBlazor = function () {\n return isBlazor() && this.isServerRendered;\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var _this = this;\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n if (this.checkBlazor()) {\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(SPLIT_BAR)) {\n this.allBars.push(this.element.children[j]);\n }\n }\n }\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n if (!this.checkBlazor()) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n if (this.checkBlazor()) {\n proxy = this;\n separator = this.allBars[i];\n this.updateIconClass();\n }\n if (!this.checkBlazor()) {\n this.wireClickEvents();\n }\n if (this.checkBlazor() && !isNullOrUndefined(separator)) {\n this.currentSeparator = separator;\n this.addMouseActions(separator);\n this.wireClickEvents();\n separator.addEventListener('focus', function () {\n if (document.activeElement.classList.contains('e-split-bar')) {\n proxy.currentSeparator = document.activeElement;\n proxy.currentSeparator.classList.add(SPLIT_BAR_ACTIVE);\n }\n _this.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n proxy.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n }\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0; j < this.allBars.length; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if (this.allPanes[i].offsetWidth < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - this.allPanes[i].offsetWidth;\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePane.offsetWidth + sizeDiff) + '%'\n : (updatePane.offsetWidth + sizeDiff) + 'px';\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPane.offsetWidth - sizeDiff) + '%' : (flexPane.offsetWidth - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n EventHandler.add(document, 'mousemove', this.onMouseMove, this);\n EventHandler.add(document, 'mouseup', this.onMouseUp, this);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.add(document, touchMoveEvent, this.onMouseMove, this);\n EventHandler.add(document, touchEndEvent, this.onMouseUp, this);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.remove(document, 'mousemove', this.onMouseMove);\n EventHandler.remove(document, 'mouseup', this.onMouseUp);\n EventHandler.remove(document, touchMoveEvent, this.onMouseMove);\n EventHandler.remove(document, touchEndEvent, this.onMouseUp);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n var totalWidth = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n if (totalWidth > this.element.offsetWidth) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n else {\n panes[i].style.flexGrow = '';\n }\n if (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\n if (visiblePane && !this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n if (this.checkBlazor() && this.allBars.length < 1) {\n this.allBars = selectAll('.' + separator, this.element);\n }\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(this.previousPaneHeightWidth);\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = isBlazor() ? {\n event: e,\n element: this.element,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n } : {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n if (isBlazor() && !this.isStringTemplate) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n if (!this.checkBlazor()) {\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n if (this.checkBlazor() && child[i].classList.contains(PANE)) {\n this.allPanes.push(child[i]);\n }\n else if (!this.checkBlazor()) {\n this.allPanes.push(child[i]);\n }\n if (!this.checkBlazor()) {\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n if (!this.checkBlazor()) {\n _super.prototype.destroy.call(this);\n }\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n if (this.checkBlazor()) {\n var splitNodes = this.element.children;\n for (var i = splitNodes.length - 1; i >= 0; i--) {\n detach(splitNodes[i]);\n }\n }\n else {\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if (items.indexOf(name_2) !== -1) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = target;\n }\n if (target.classList.contains(CLS.FULLROW)) {\n this.parent.selectedItems.length = 0;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr') : target;\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n \"Same-Folder-Error\": \"The destination folder is the same as the source folder.\",\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\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, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n *
    \n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.sortBy = 'name';\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { FileManager } from '@syncfusion/ej2-filemanager';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n Represents the Essential JS 2 react FileManager Component.\n * ```tsx\n * \n * ```\n */\nvar FileManagerComponent = /** @class */ (function (_super) {\n __extends(FileManagerComponent, _super);\n function FileManagerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n FileManagerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return FileManagerComponent;\n}(FileManager));\nexport { FileManagerComponent };\napplyMixins(FileManagerComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent + ' splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\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 rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\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 return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */ (function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */ (function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */ (function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */ (function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Slider.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isMaterialTooltip = this.isMaterial && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n this.getHandle().style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.isMaterial && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n if (this.min > this.max) {\n this.min = this.max;\n }\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = this.tooltipObj.content;\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n _this.tooltipObj.content = observedArgs.text;\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n this.tooltipObj.content = content;\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || (this.isMaterial && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4 || this.isTailwind,\n cssClass: classNames.sliderTooltip,\n height: this.isMaterial ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = this.isMaterialTooltip ? 'Always' : (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var liElementPosition = 0;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n var spanText;\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var smallTick = 12;\n var largeTick = 20;\n var half = largeTick / 2;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.max.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal') {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = fromMinPostion + 'px';\n this.limitBarFirst.style.height = (fromMaxpostion - fromMinPostion) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = toMinPostion + 'px';\n this.limitBarSecond.style.height = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: this.tooltipObj.content, isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min > this.max) {\n this.min = this.max;\n }\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range') {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range') {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && this.handlePos2 < this.handlePos1) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1)) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n if (evt.target === handle) {\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = this.isMaterial && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n this.changeEvent('changed', evt);\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === this.max) {\n this.handleValueAdjust(this.handleVal2, this.max, 2);\n }\n if (this.handleVal1 === this.min) {\n this.handleValueAdjust(this.handleVal1, this.min, 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (handlepos > this.handlePos2) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (handlepos < this.handlePos1) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n };\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.setTooltip(prop);\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None') {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range') {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n open: this.onOpen.bind(this),\n click: function () {\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.split(' '));\n }\n if (Browser.isDevice) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'presentation' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n this.setProperties({ 'value': cValue }, true);\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","import { addClass, Browser, removeClass, EventHandler, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getInstance, closest, selectAll, detach } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport * as classes from '../base/classes';\nimport * as events from '../base/constant';\nimport { CLS_TOOLBAR, CLS_DROPDOWN_BTN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_INLINE_DROPDOWN, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_BULLETFORMATLIST_TB_BTN, CLS_NUMBERFORMATLIST_TB_BTN, CLS_LIST_PRIMARY_CONTENT } from '../base/classes';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { hasClass } from '../base/util';\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n\n */\nvar ToolbarRenderer = /** @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n */\n function ToolbarRenderer(parent) {\n this.parent = parent;\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(events.destroy, this.unWireEvent, this);\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(events.destroy, this.unWireEvent);\n if (this.popupOverlay) {\n EventHandler.remove(this.popupOverlay, 'click touchmove', this.onPopupOverlay);\n }\n this.removePopupContainer();\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(events.toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(events.toolbarClick, args);\n }\n this.parent.trigger('toolbarClick', args);\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(events.dropDownSelect, args);\n this.onPopupOverlay();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(events.beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1) {\n var listEle = args.element.querySelectorAll('li');\n if (this.parent.inputElement.querySelectorAll('.e-cell-select').length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (this.parent.inputElement.querySelectorAll('.e-cell-select').length > 1) {\n removeClass([listEle[0]], 'e-disabled');\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n if (Browser.isDevice && !args.element.parentElement.classList.contains(classes.CLS_QUICK_DROPDOWN)) {\n this.popupModal(args.element.parentElement);\n }\n this.parent.notify(events.selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.removePopupContainer();\n this.parent.notify(events.selectionRestore, args);\n };\n ToolbarRenderer.prototype.removePopupContainer = function () {\n if (Browser.isDevice && !isNullOrUndefined(this.popupContainer)) {\n var popupEle = this.popupContainer.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n this.popupContainer.parentNode.insertBefore(popupEle, this.popupContainer.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(this.popupContainer);\n this.popupContainer = undefined;\n }\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n for (var index = 0; index < args.element.childNodes.length; index++) {\n var divNode = _this.parent.createElement('div');\n divNode.innerHTML = dropDown.content.trim();\n if (divNode.textContent.trim() !== ''\n && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) {\n if (!args.element.childNodes[index].classList.contains('e-active')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n else {\n removeClass([args.element.childNodes[index]], 'e-active');\n }\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @param {string} item - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n return dropDown;\n };\n // eslint-disable-next-line\n ToolbarRenderer.prototype.onPopupOverlay = function (args) {\n if (!isNullOrUndefined(this.popupOverlay)) {\n closest(this.popupOverlay, '.e-popup-container').style.display = 'none';\n this.popupOverlay.style.display = 'none';\n removeClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.setIsModel = function (element) {\n if (!closest(element, '.e-popup-container')) {\n this.popupContainer = this.parent.createElement('div', {\n className: 'e-rte-modal-popup e-popup-container e-center'\n });\n element.parentNode.insertBefore(this.popupContainer, element);\n this.popupContainer.appendChild(element);\n this.popupContainer.style.zIndex = element.style.zIndex;\n this.popupContainer.style.display = 'flex';\n element.style.position = 'relative';\n addClass([element], 'e-popup-modal');\n this.popupOverlay = this.parent.createElement('div', { className: 'e-popup-overlay' });\n // eslint-disable-next-line\n this.popupOverlay.style.zIndex = (parseInt(element.style.zIndex, null) - 1).toString();\n this.popupOverlay.style.display = 'block';\n this.popupContainer.appendChild(this.popupOverlay);\n EventHandler.add(this.popupOverlay, 'click touchmove', this.onPopupOverlay, this);\n }\n else {\n element.parentElement.style.display = 'flex';\n this.popupOverlay = element.nextElementSibling;\n this.popupOverlay.style.display = 'block';\n addClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(events.selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor') {\n proxy.parent.notify(events.tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n if (Browser.isDevice) {\n _this.popupModal(dropDownArgs.element.parentElement);\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(events.tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(events.selectionRestore, {});\n var dropElement = closest(dropDownArgs.element.parentElement, '.e-popup-container');\n if (dropElement) {\n dropElement.style.display = 'none';\n dropElement.lastElementChild.style.display = 'none';\n removeClass([dropElement.lastElementChild], 'e-popup-overlay');\n }\n if (Browser.isDevice && !isNullOrUndefined(dropElement)) {\n var popupEle = dropElement.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n dropElement.parentNode.insertBefore(popupEle, dropElement.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(dropElement);\n proxy.popupContainer = undefined;\n }\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.popupModal = function (element) {\n var popupInst = getInstance(element, Popup);\n popupInst.relateTo = document.body;\n popupInst.position = { X: 0, Y: 0 };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupInst.dataBind();\n this.setIsModel(element);\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: true,\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.setProperties({ value: value });\n },\n mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),\n modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(events.selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor') {\n proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;\n colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :\n this.parent.fontColor.colorCode;\n colorPicker.cssClass = (item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER;\n colorPicker.createElement = this.parent.createElement;\n colorPicker.appendTo(document.getElementById(args.target));\n return colorPicker;\n };\n /**\n * The function is used to render Rich Text Editor toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_TOOLBAR);\n };\n /**\n * Get the toolbar element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.getPanel = function () {\n return this.toolbarPanel;\n };\n /**\n * Set the toolbar element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.setPanel = function (panel) {\n this.toolbarPanel = panel;\n };\n return ToolbarRenderer;\n}());\nexport { ToolbarRenderer };\n","import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(events.toolbarClick, this.toolbarClick, this);\n this.parent.on(events.dropDownSelect, this.dropDownSelect, this);\n this.parent.on(events.colorPickerChanged, this.renderSelection, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNOU(args.item)) {\n return;\n }\n if (!isNOU(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n args.item.command = args.item.subCommand = null;\n }\n }\n this.parent.notify(events.htmlToolbarClick, args);\n this.parent.notify(events.markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(events.selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(events.selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarClick, this.toolbarClick);\n this.parent.off(events.dropDownSelect, this.dropDownSelect);\n this.parent.off(events.colorPickerChanged, this.renderSelection);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\nexport { ToolbarAction };\n","import { addClass, Browser, EventHandler, detach, removeClass, select, selectAll, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType, ToolbarType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, getTBarItemsIndex, getCollection, toObjectLowerCase, isIDevice } from '../base/util';\nimport { updateDropDownFontFormatLocale } from '../base/util';\nimport * as model from '../models/items';\nimport { ToolbarRenderer } from '../renderer/toolbar-renderer';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ToolbarAction } from './toolbar-action';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n model.updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, model.tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = model.tools;\n }\n }\n Toolbar.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n }\n };\n Toolbar.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (this.parent.toolbarSettings.enableFloating && !this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: classes.CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [classes.CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar.prototype.toggleFloatClass = function (e) {\n var topValue;\n var isBody = false;\n var isFloat = false;\n var scrollParent;\n var floatOffset = this.parent.floatingToolbarOffset;\n if (e && this.parent.iframeSettings.enable && this.parent.inputElement.ownerDocument === e.target) {\n scrollParent = e.target.body;\n }\n else if (e && e.target !== document) {\n scrollParent = e.target;\n }\n else {\n isBody = true;\n scrollParent = document.body;\n }\n var tbHeight = this.getToolbarHeight() + this.getExpandTBarPopHeight();\n if (this.isTransformChild) {\n topValue = 0;\n var scrollParentRelativeTop = 0;\n var trgHeight = this.parent.element.offsetHeight;\n if (isBody) {\n var bodyStyle = window.getComputedStyle(scrollParent);\n scrollParentRelativeTop = parseFloat(bodyStyle.marginTop.split('px')[0]) + parseFloat(bodyStyle.paddingTop.split('px')[0]);\n }\n var targetTop = this.parent.element.getBoundingClientRect().top;\n var scrollParentYOffset = (Browser.isMSPointer && isBody) ? window.pageYOffset : scrollParent.parentElement.scrollTop;\n var scrollParentRect = scrollParent.getBoundingClientRect();\n var scrollParentTop = (!isBody) ? scrollParentRect.top : (scrollParentRect.top + scrollParentYOffset);\n var outOfRange = ((targetTop - ((!isBody) ? scrollParentTop : 0))\n + trgHeight > tbHeight + floatOffset) ? false : true;\n if (targetTop > (scrollParentTop + floatOffset) || targetTop < -trgHeight || ((targetTop < 0) ? outOfRange : false)) {\n isFloat = false;\n removeClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n }\n else if (targetTop < (scrollParentTop + floatOffset)) {\n if (targetTop < 0) {\n topValue = (-targetTop) + scrollParentTop;\n }\n else {\n topValue = scrollParentTop - targetTop;\n }\n topValue = (isBody) ? topValue - scrollParentRelativeTop : topValue;\n addClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n isFloat = true;\n }\n }\n else {\n var parent_1 = this.parent.element.getBoundingClientRect();\n if (window.innerHeight < parent_1.top) {\n return;\n }\n topValue = (e && e.target !== document) ? scrollParent.getBoundingClientRect().top : 0;\n if ((parent_1.bottom < (floatOffset + tbHeight + topValue)) || parent_1.bottom < 0 || parent_1.top > floatOffset + topValue) {\n isFloat = false;\n }\n else if (parent_1.top < floatOffset) {\n isFloat = true;\n }\n }\n if (!isFloat) {\n removeClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { top: 0 + 'px', width: '100%' });\n }\n else {\n addClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { width: this.parent.element.offsetWidth + 'px', top: (floatOffset + topValue) + 'px' });\n }\n };\n Toolbar.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(events.renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.e-rte-srctextarea');\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNOU(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNOU(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n Toolbar.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [classes.CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [classes.CLS_TB_IOS_FIX]);\n }\n };\n Toolbar.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [classes.CLS_SHOW, classes.CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNOU(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.e-rte-srctextarea', this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + classes.CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + classes.CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [classes.CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [classes.CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarElement = function () {\n return select('.' + classes.CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.refreshToolbarOverflow = function () {\n this.baseToolbar.toolbarObj.refreshOverflow();\n };\n Toolbar.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(events.destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.destroy = function () {\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar.prototype.scrollHandler = function (e) {\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating && this.getDOMVisibility(this.tbElement)) {\n this.toggleFloatClass(e.args);\n }\n }\n };\n Toolbar.prototype.getDOMVisibility = function (el) {\n if (!el.offsetParent && el.offsetWidth === 0 && el.offsetHeight === 0) {\n return false;\n }\n return true;\n };\n Toolbar.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNOU(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar.prototype.tbKeydownHandler = function (e) {\n if (e.target.classList.contains('e-dropdown-btn') ||\n e.target.getAttribute('id') === this.parent.getID() + '_toolbar_CreateTable') {\n e.target.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNOU(trg)) {\n if (!trg.classList.contains('e-nav-active')) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', false);\n }\n else {\n addClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', true);\n }\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNOU(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n EventHandler.add(this.tbElement, 'keydown', this.tbKeydownHandler, this);\n };\n Toolbar.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n EventHandler.remove(this.tbElement, 'keydown', this.tbKeydownHandler);\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(events.initialEnd, this.renderToolbar, this);\n this.parent.on(events.scroll, this.scrollHandler, this);\n this.parent.on(events.bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(events.toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.refreshBegin, this.onRefresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.enableFullScreen, this.fullScreen, this);\n this.parent.on(events.disableFullScreen, this.hideScreen, this);\n this.parent.on(events.updateToolbarItem, this.updateItem, this);\n this.parent.on(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(events.expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(events.focusChange, this.focusChangeHandler, this);\n this.parent.on(events.mouseDown, this.mouseDownHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseDownHandler, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderToolbar);\n this.parent.off(events.scroll, this.scrollHandler);\n this.parent.off(events.bindOnEnd, this.toolbarBindEvent);\n this.parent.off(events.toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.refreshBegin, this.onRefresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(events.disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(events.updateToolbarItem, this.updateItem);\n this.parent.off(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(events.expandPopupClick, this.parent.setContentHeight);\n this.parent.off(events.focusChange, this.focusChangeHandler);\n this.parent.off(events.mouseDown, this.mouseDownHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseDownHandler);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n }\n };\n Toolbar.prototype.onRefresh = function () {\n this.refreshToolbarOverflow();\n this.parent.setContentHeight('', true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(events.dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { debounce } from '@syncfusion/ej2-base';\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n *\n * @hidden\n */\nvar InterSectionObserver = /** @class */ (function () {\n function InterSectionObserver(element, options, movableEle) {\n var _this = this;\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerRect.top;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var bottom = rect.bottom;\n info.entered = rect.bottom <= _this.containerRect.bottom;\n return ((bottom - _this.containerRect.top) - (_this.options.pageHeight / 2)) <= _this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: function (rect, info) {\n var right = rect.right;\n if (_this.movableEle) {\n info.entered = right < _this.movableContainerRect.right;\n return right - _this.movableContainerRect.width <= _this.movableContainerRect.right;\n }\n info.entered = right < _this.containerRect.right;\n return right - _this.containerRect.width <= _this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: function (rect, info) {\n var left = rect.left;\n info.entered = left > 0;\n if (_this.movableEle) {\n return left + _this.movableContainerRect.width >= _this.movableContainerRect.left;\n }\n return left + _this.containerRect.width >= _this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n this.movableEle = movableEle;\n }\n InterSectionObserver.prototype.observe = function (callback, onEnterCallback) {\n var _this = this;\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n if (this.options.movableContainer) {\n this.movableContainerRect = this.options.movableContainer.getBoundingClientRect();\n EventHandler.add(this.options.scrollbar, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.scrollbar, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n }\n };\n InterSectionObserver.prototype.check = function (direction) {\n var info = this.sentinelInfo[direction];\n if (this.movableContainerRect && (direction === 'left' || direction === 'right')) {\n return info.check(this.movableEle.getBoundingClientRect(), info);\n }\n return info.check(this.element.getBoundingClientRect(), info);\n };\n InterSectionObserver.prototype.virtualScrollHandler = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this.options.prevTop = this.options.prevLeft = 0;\n return function (e) {\n var top = _this.options.movableContainer ? _this.options.container.scrollTop : e.target.scrollTop;\n var left = _this.options.movableContainer ? _this.options.scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this.options.prevTop < top ? 'down' : 'up';\n direction = _this.options.prevLeft === left ? direction : _this.options.prevLeft < left ? 'right' : 'left';\n _this.options.prevTop = top;\n _this.options.prevLeft = left;\n var current = _this.sentinelInfo[direction];\n if (_this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered) {\n if (_this.movableEle && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this.movableEle, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n else {\n onEnterCallback(_this.element, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n }\n if (check) {\n var fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n _this.fromWheel = false;\n };\n };\n InterSectionObserver.prototype.setPageHeight = function (value) {\n this.options.pageHeight = value;\n };\n return InterSectionObserver;\n}());\nexport { InterSectionObserver };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isGroupAdaptive } from '../base/util';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n */\nvar VirtualRowModelGenerator = /** @class */ (function () {\n function VirtualRowModelGenerator(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.currentInfo = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n VirtualRowModelGenerator.prototype.generateRows = function (data, e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isManualRefresh = false;\n var info = e.virtualInfo = e.virtualInfo || this.getData();\n var xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n var page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n var result = [];\n var indexes = this.getBlockIndexes(page);\n var loadedBlocks = [];\n if (this.currentInfo.blockIndexes) {\n indexes = info.blockIndexes = e.virtualInfo.blockIndexes = this.includePrevPage ? this.currentInfo.blockIndexes.slice(1)\n : this.currentInfo.blockIndexes.slice(0, this.currentInfo.blockIndexes.length - 1);\n isManualRefresh = true;\n }\n if ((isFrozen && (this.parent.getFrozenMode() !== literals.leftRight && !e.renderMovableContent)\n || this.parent.getFrozenMode() === literals.leftRight && !e.renderMovableContent && !e.renderFrozenRightContent) || !isFrozen) {\n this.checkAndResetCache(e.requestType);\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n return result = this.parent.vcRows;\n }\n if (this.parent.enableColumnVirtualization) {\n for (var i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[i])) {\n this.cache[info.blockIndexes[i]] = this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[i]]);\n }\n if ((e.renderMovableContent && this.isMovableBlockAvailable(info.blockIndexes[i]))\n || (e.renderFrozenRightContent && this.isFrozenRightBlockAvailable(info.blockIndexes[i]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n cache[info.blockIndexes[i]] = this.rowModelGenerator.refreshRows(cache[info.blockIndexes[i]]);\n }\n }\n }\n var values = info.blockIndexes;\n for (var i = 0; i < values.length; i++) {\n if (!this.isBlockAvailable(values[i])) {\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex : this.getStartIndex(values[i], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isGroupAdaptive(this.parent) && !this.parent.vcRows.length) {\n this.parent.vRows = rows;\n this.parent.vcRows = rows;\n this.parent.notify(events.refreshVirtualMaxPage, {});\n }\n var median = void 0;\n if (isGroupAdaptive(this.parent)) {\n this.getGroupVirtualRecordsByIndex(rows);\n }\n else {\n if (isManualRefresh) {\n this.setBlockForManualRefresh(this.cache, indexes, rows);\n }\n else {\n median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n }\n if (this.parent.groupSettings.columns.length && !xAxis && this.cache[values[i]]) {\n this.cache[values[i]] = this.updateGroupRow(this.cache[values[i]], values[i]);\n }\n if ((e.renderMovableContent && !this.isMovableBlockAvailable(values[i]))\n || (e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(values[i]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex : this.getStartIndex(values[i], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isManualRefresh) {\n this.setBlockForManualRefresh(cache, indexes, rows);\n }\n else {\n var median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[0]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[0]))) {\n cache[indexes[0]] = rows.slice(0, median);\n }\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[1]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[1]))) {\n cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n if (!e.renderMovableContent && !e.renderFrozenRightContent && this.cache[values[i]]) {\n result.push.apply(result, this.cache[values[i]]);\n }\n else {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n if (cache[values[i]]) {\n result.push.apply(result, cache[values[i]]);\n }\n }\n if (this.isBlockAvailable(values[i])) {\n loadedBlocks.push(values[i]);\n }\n }\n info.blockIndexes = loadedBlocks;\n var grouping = 'records';\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.parent.currentViewData[grouping] = result.map(function (m) { return m.data; });\n }\n else if (isFrozen) {\n if ((e.renderMovableContent && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenColumns())) || e.renderFrozenRightContent) {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n }\n else {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.setBlockForManualRefresh = function (cache, blocks, rows) {\n var size = this.model.pageSize / 2;\n if (this.includePrevPage) {\n cache[blocks[0] - 1] = rows.slice(0, size);\n cache[blocks[0]] = rows.slice(size, size * 2);\n cache[blocks[1]] = rows.slice(size * 2, size * 3);\n cache[blocks[2]] = rows.slice(size * 3, size * 4);\n }\n else {\n cache[blocks[0]] = rows.slice(0, size);\n cache[blocks[1]] = rows.slice(size, size * 2);\n cache[blocks[2]] = rows.slice(size * 2, size * 3);\n cache[blocks[2] + 1] = rows.slice(size * 3, size * 4);\n }\n };\n VirtualRowModelGenerator.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualRowModelGenerator.prototype.getPage = function (block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n };\n VirtualRowModelGenerator.prototype.isBlockAvailable = function (value) {\n return value in this.cache;\n };\n VirtualRowModelGenerator.prototype.isMovableBlockAvailable = function (value) {\n return value in this.movableCache;\n };\n VirtualRowModelGenerator.prototype.isFrozenRightBlockAvailable = function (value) {\n return value in this.frozenRightCache;\n };\n VirtualRowModelGenerator.prototype.getData = function () {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n };\n VirtualRowModelGenerator.prototype.getStartIndex = function (blk, data, full) {\n if (full === void 0) { full = true; }\n var page = this.getPage(blk);\n var even = blk % 2 === 0;\n var index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n };\n VirtualRowModelGenerator.prototype.getColumnIndexes = function (content) {\n var _this = this;\n if (content === void 0) { content = this.parent.getHeaderContent().querySelector('.' + literals.headerContent); }\n if (this.parent.isFrozenGrid()) {\n content = content.querySelector('.' + literals.movableHeader);\n }\n var indexes = [];\n var sLeft = content.scrollLeft | 0;\n var keys = Object.keys(this.cOffsets);\n var cWidth = content.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n var calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n var left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n keys.some(function (offset) {\n var iOffset = Number(offset);\n var offsetVal = _this.cOffsets[offset];\n var border = sLeft - calWidth <= offsetVal && left + calWidth >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n this.addFrozenIndex(indexes);\n return indexes;\n };\n VirtualRowModelGenerator.prototype.addFrozenIndex = function (indexes) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization && indexes[0] === 0) {\n for (var i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(indexes[indexes.length - 1] + 1);\n }\n }\n };\n VirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n if (this.parent.getFrozenColumns() && this.parent.frozenRows && this.parent.enableColumnVirtualization && action === 'reorder') {\n actions.splice(actions.indexOf(action), 1);\n }\n var clear = actions.some(function (value) { return action === value; });\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n }\n return clear;\n };\n VirtualRowModelGenerator.prototype.refreshColOffsets = function () {\n var _this = this;\n var col = 0;\n this.cOffsets = {};\n var gLen = this.parent.groupSettings.columns.length;\n var cols = this.parent.columns;\n var cLen = cols.length;\n var isVisible = function (column) { return column.visible &&\n (!_this.parent.groupSettings.showGroupedColumn ? _this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible); };\n var c = this.parent.groupSettings.columns;\n for (var i = 0; i < c.length; i++) {\n this.cOffsets[i] = (this.cOffsets[i - 1] | 0) + 30;\n }\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(cLen)).map(function () { return col++; });\n for (var j = 0; j < blocks.length; j++) {\n blocks[j] = blocks[j] + gLen;\n this.cOffsets[blocks[j]] = (this.cOffsets[blocks[j] - 1] | 0) + (isVisible(cols[j]) ? parseInt(cols[j].width, 10) : 0);\n }\n };\n VirtualRowModelGenerator.prototype.updateGroupRow = function (current, block) {\n var currentFirst = current[0];\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n if (Number(keys[i]) < block) {\n rows = rows.concat(this.cache[keys[i]]);\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n };\n VirtualRowModelGenerator.prototype.iterateGroup = function (current, rows) {\n var currentFirst = current[0];\n var offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n var isPresent = current.some(function (row) {\n return rows.some(function (oRow, index) {\n var res = oRow && oRow.data.field !== undefined\n && oRow.data.field === row.data.field &&\n oRow.data.key === row.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n };\n VirtualRowModelGenerator.prototype.getRows = function () {\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.cache[keys[i]]);\n }\n return rows;\n };\n VirtualRowModelGenerator.prototype.generateCells = function () {\n var cells = [];\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n cells.push(this.rowModelGenerator.generateCell(cols[i]));\n }\n return cells;\n };\n VirtualRowModelGenerator.prototype.getGroupVirtualRecordsByIndex = function (rows) {\n var blocks = this.parent.contentModule.getGroupedTotalBlocks();\n var blockSize = this.parent.contentModule.getBlockSize();\n for (var i = 1; i <= blocks; i++) {\n var count = 0;\n this.cache[i] = [];\n for (var j = ((i - 1) * blockSize); j < rows.length; j++) {\n if (count === blockSize) {\n break;\n }\n this.cache[i].push(rows[j]);\n if (rows[j].isDataRow) {\n count++;\n }\n }\n }\n };\n return VirtualRowModelGenerator;\n}());\nexport { VirtualRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { remove, createElement, closest, formatUnit, Browser, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { dataReady, modelChanged, refreshVirtualBlock, contentReady } from '../base/constant';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { ContentRender } from './content-renderer';\nimport { HeaderRender } from './header-renderer';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport { VirtualRowModelGenerator } from '../services/virtual-row-model-generator';\nimport { isGroupAdaptive, ensureLastRow, ensureFirstRow, getEditedDataIndex, getTransformValues } from '../base/util';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualContentRenderer\n *\n * @hidden\n */\nvar VirtualContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualContentRenderer, _super);\n function VirtualContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.prevHeight = 0;\n /** @hidden */\n _this.startIndex = 0;\n _this.preStartIndex = 0;\n _this.preventEvent = false;\n _this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n /** @hidden */\n _this.offsets = {};\n _this.tmpOffsets = {};\n /** @hidden */\n _this.virtualEle = new VirtualElementHandler();\n _this.offsetKeys = [];\n _this.isFocused = false;\n _this.isSelection = false;\n _this.isBottom = false;\n _this.rndrCount = 0;\n _this.empty = undefined;\n _this.isCancel = false;\n _this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save'];\n _this.isNormaledit = _this.parent.editSettings.mode === 'Normal';\n /** @hidden */\n _this.virtualData = {};\n _this.emptyRowData = {};\n _this.vfColIndex = [];\n _this.frzIdx = 1;\n _this.isContextMenuOpen = false;\n _this.isSelectionScroll = false;\n _this.validationCheck = false;\n _this.locator = locator;\n _this.eventListener('on');\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.vgenerator = _this.generator;\n return _this;\n }\n VirtualContentRenderer.prototype.renderTable = function () {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualEle.renderWrapper(this.parent.height);\n this.virtualEle.renderPlaceHolder();\n this.virtualEle.wrapper.style.position = 'absolute';\n var debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n var opt = {\n container: this.content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n };\n VirtualContentRenderer.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n this.virtualEle.adjustTable(0, 0);\n };\n VirtualContentRenderer.prototype.getReorderedFrozenRows = function (args) {\n var blockIndex = args.virtualInfo.blockIndexes;\n var colsIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var recordslength = this.parent.getCurrentViewRecords().length;\n var firstRecords = this.parent.renderModule.data.dataManager.dataSource.json.slice(0, recordslength);\n var virtualRows = this.vgenerator.generateRows(firstRecords, args);\n args.virtualInfo.blockIndexes = blockIndex;\n args.virtualInfo.columnIndexes = colsIndex;\n args.virtualInfo.page = page;\n return virtualRows.splice(0, this.parent.frozenRows);\n };\n VirtualContentRenderer.prototype.scrollListener = function (scrollArgs) {\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.' + literals.content) || this.content === document.activeElement;\n }\n var info = scrollArgs.sentinel;\n var viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isGroupAdaptive(this.parent)) {\n if (viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString()) {\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.pageSettings.currentPage = viewInfo.page;\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (info.axis === 'Y') {\n this.restoreEdit();\n }\n return;\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.requestType = 'virtualscroll';\n this.parent.notify(viewInfo.event, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n };\n VirtualContentRenderer.prototype.block = function (blk) {\n return this.vgenerator.isBlockAvailable(blk);\n };\n VirtualContentRenderer.prototype.getInfoFromView = function (direction, info, e) {\n var isBlockAdded = false;\n var tempBlocks = [];\n var infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n var blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.blockIndexes = blocks;\n infoType.loadNext = !blocks.filter(function (val) { return tempBlocks.indexOf(val) === -1; })\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow') {\n var firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n return infoType;\n };\n VirtualContentRenderer.prototype.setKeyboardNavIndex = function () {\n this.blazorDataLoad = true;\n if (this.activeKey === 'downArrow' || this.activeKey === 'upArrow') {\n this.blzRowIndex = this.activeKey === 'downArrow' ? this.rowIndex + 1 : this.rowIndex - 1;\n document.activeElement.blur();\n }\n };\n VirtualContentRenderer.prototype.ensureBlocks = function (info) {\n var _this = this;\n var index = info.blockIndexes[info.block];\n var mIdx;\n var old = index;\n var max = Math.max;\n var indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n // To avoid frozen content white space issue\n if (info.sentinelInfo.axis === 'X' || (info.sentinelInfo.axis === 'Y' && (info.page === this.prevInfo.page))) {\n indexes = this.prevInfo.blockIndexes;\n }\n }\n indexes = indexes.filter(function (val, ind) { return indexes.indexOf(val) === ind; });\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some(function (val, ind) {\n var result = val === (isGroupAdaptive(_this.parent) ? _this.getGroupedTotalBlocks() : _this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n };\n // tslint:disable-next-line:max-func-body-length\n VirtualContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var _this = this;\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n var isFrozen = this.parent.isFrozenGrid();\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var colVFtable = this.parent.enableColumnVirtualization && isFrozen;\n this.checkFirstBlockColIndexes(e);\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n if (colVFtable && info.columnIndexes[0] === frzCols) {\n cBlock = (info.columnIndexes[0] - frzCols) - 1;\n }\n var cOffset = this.getColumnOffset(cBlock);\n var width;\n var blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n if (!this.requestTypes.some(function (value) { return value === _this.requestType; })) {\n var translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n this.virtualEle.adjustTable(colVFtable ? 0 : cOffset, translate);\n if (colVFtable) {\n this.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(colVFtable ? 0 : cOffset, 0);\n if (colVFtable) {\n this.header.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (colVFtable) {\n this.header.virtualEle.setMovableWrapperWidth(width);\n }\n else {\n this.header.virtualEle.setWrapperWidth(width);\n }\n }\n if (colVFtable) {\n this.virtualEle.setMovableWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n else {\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n if (!isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n var tbody;\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n tbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n }\n else if (!e.renderMovableContent) {\n tbody = this.parent.getFrozenVirtualContent().querySelector(literals.tbody);\n }\n else if (e.renderMovableContent) {\n tbody = this.parent.getMovableVirtualContent().querySelector(literals.tbody);\n }\n }\n else {\n tbody = this.parent.element.querySelector('.' + literals.content).querySelector(literals.tbody);\n }\n if (tbody) {\n remove(tbody);\n target = null;\n }\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (!isReact) {\n target = this.parent.createElement(literals.tbody);\n target.appendChild(newChild);\n }\n else {\n target = newChild;\n }\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && this.parent.pageSettings.currentPage === 1) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + literals.table).appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n else if (!e.renderMovableContent) {\n this.parent.getFrozenVirtualContent().querySelector('.' + literals.table).appendChild(target);\n }\n else if (e.renderMovableContent) {\n this.parent.getMovableVirtualContent().querySelector('.' + literals.table).appendChild(target);\n if (this.parent.getFrozenMode() !== literals.leftRight) {\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n }\n if (this.vfColIndex.length) {\n e.virtualInfo.columnIndexes = info.columnIndexes = extend([], this.vfColIndex);\n this.vfColIndex = e.renderMovableContent ? [] : this.vfColIndex;\n }\n }\n else {\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n var blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n this.preventEvent = true;\n var sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit(e);\n this.restoreAdd(e);\n this.ensureSelectedRowPosition();\n this.validationScrollLeft(e, isFrozen);\n if (!this.initialRowTop) {\n var gridTop = this.parent.element.getBoundingClientRect().top;\n this.initialRowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n var tableName = e.tableName;\n var isLoaded = this.parent.getFrozenMode() === 'Left-Right' ? tableName === 'frozen-right' : tableName === 'movable';\n if (!isFrozen || isLoaded) {\n this.vgenerator.startIndex = null;\n this.vgenerator.currentInfo = {};\n this.vgenerator.includePrevPage = null;\n }\n };\n VirtualContentRenderer.prototype.validationScrollLeft = function (e, isFrozen) {\n var left = this.parent.getFrozenColumns();\n var table = this.parent.getFrozenMode();\n var trigger = !isFrozen || e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if (this.validationCheck && trigger) {\n if (this.validationCol) {\n var offset = this.vgenerator.cOffsets[(this.validationCol.index - this.parent.getVisibleFrozenColumns()) - 1];\n this.validationCol = null;\n if (this.parent.isFrozenGrid()) {\n this.movableContent.scrollLeft = offset;\n }\n else {\n this.content.scrollLeft = offset;\n }\n }\n else {\n this.validationCheck = false;\n this.parent.editModule.editFormValidate();\n }\n }\n };\n VirtualContentRenderer.prototype.ensureSelectedRowPosition = function () {\n if (!this.isSelection && this.isSelectionScroll && !isNullOrUndefined(this.selectRowIndex)) {\n this.isSelectionScroll = false;\n var row = this.parent.getRowByIndex(this.selectRowIndex);\n if (row && !this.isRowInView(row)) {\n this.rowSelected({ rowIndex: this.selectRowIndex, row: row }, true);\n }\n }\n };\n VirtualContentRenderer.prototype.checkFirstBlockColIndexes = function (e) {\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && e.virtualInfo.columnIndexes[0] === 0) {\n var indexes = [];\n var frozenCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n if (!e.renderMovableContent && e.virtualInfo.columnIndexes.length > frozenCols) {\n this.vfColIndex = e.virtualInfo.columnIndexes;\n for (var i = 0; i < frozenCols; i++) {\n indexes.push(i);\n }\n e.virtualInfo.columnIndexes = indexes;\n }\n else if (e.renderMovableContent) {\n if (!this.vfColIndex.length) {\n this.vfColIndex = extend([], e.virtualInfo.columnIndexes);\n }\n e.virtualInfo.columnIndexes = extend([], this.vfColIndex);\n e.virtualInfo.columnIndexes.splice(0, frozenCols);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.focusCell = function (e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n var row = this.parent.getRowByIndex(this.rowIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = row.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n this.parent.selectRow(parseInt(row.getAttribute(literals.ariaRowIndex), 10));\n this.activeKey = this.empty;\n };\n VirtualContentRenderer.prototype.restoreEdit = function (e) {\n if (this.isNormaledit) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.parent.editSettings.allowEditing\n && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n var row = this.getRowByIndex(this.editedRowIndex);\n var content = this.content;\n var keys = Object.keys(this.virtualData);\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n if (isFrozen && isXaxis) {\n row = this.parent.getMovableRowByIndex(this.editedRowIndex);\n content = this.movableContent;\n }\n if (keys.length && row && !content.querySelector('.' + literals.editedRow)) {\n var top_1 = row.getBoundingClientRect().top;\n if (isXaxis || (top_1 < this.content.offsetHeight && top_1 > this.parent.getRowHeight())) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n if (row && this.content.querySelector('.' + literals.editedRow) && !keys.length) {\n var rowData = extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd(e);\n }\n };\n VirtualContentRenderer.prototype.getVirtualEditedData = function (rowData) {\n var editForms = [].slice.call(this.parent.element.getElementsByClassName('e-gridform'));\n var isFormDestroyed = this.parent.editModule && this.parent.editModule.formObj\n && this.parent.editModule.formObj.isDestroyed;\n if (!isFormDestroyed) {\n for (var i = 0; i < editForms.length; i++) {\n rowData = this.parent.editModule.getCurrentEditedData(editForms[i], rowData);\n }\n }\n return rowData;\n };\n VirtualContentRenderer.prototype.restoreAdd = function (e) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table = this.parent.getFrozenMode();\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n var startAdd = isXaxis && isFrozen ? !(this.parent.getMovableVirtualHeader().querySelector('.' + literals.addedRow)\n || this.parent.getMovableVirtualContent().querySelector('.' + literals.addedRow)) : !this.parent.element.querySelector('.' + literals.addedRow);\n var trigger = e && (left || table === 'Left' || table === 'Right' ? e.renderMovableContent : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.isNormaledit && this.isAdd && startAdd) {\n var isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n var isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n VirtualContentRenderer.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some(function (value) { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n };\n /**\n * @param {number} height - specifies the height\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.setVirtualHeight = function (height) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n if (this.parent.isFrozenGrid()) {\n var virtualHeightTemp = (this.parent.pageSettings.currentPage === 1 && Object.keys(this.offsets).length <= 2) ?\n this.offsets[1] : this.offsets[this.getTotalBlocks() - 2];\n var scrollableElementHeight = this.content.clientHeight;\n virtualHeightTemp = virtualHeightTemp > scrollableElementHeight ? virtualHeightTemp : 0;\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, width);\n }\n else {\n var virtualHeight = (this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n if (this.parent.isFrozenGrid()) {\n this.virtualEle.setMovableVirtualHeight(1, width);\n this.header.virtualEle.setMovableVirtualHeight(1, width);\n }\n }\n };\n VirtualContentRenderer.prototype.getPageFromTop = function (sTop, info) {\n var _this = this;\n var total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n var page = 0;\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = sTop <= _this.offsets[offset] || (iOffset === total && sTop > _this.offsets[offset]);\n if (border) {\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && sTop <= _this.offsets[_this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.vgenerator.getPage(iOffset), _this.maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n var block = (info.blockIndexes[0] || 1) - 1;\n var translate = this.getOffset(block);\n var endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n var result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n var blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n if (result + blockHeight > this.offsets[totalBlocks]) {\n result -= (result + blockHeight) - this.offsets[totalBlocks];\n }\n return result;\n };\n VirtualContentRenderer.prototype.getOffset = function (block) {\n return Math.min(this.offsets[block] | 0, this.offsets[this.maxBlock] | 0);\n };\n VirtualContentRenderer.prototype.onEntered = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n if (Browser.isIE && !isWheel && check && !_this.preventEvent) {\n _this.parent.showSpinner();\n }\n var colVFtable = _this.parent.enableColumnVirtualization && _this.parent.isFrozenGrid();\n var xAxis = current.axis === 'X';\n var top = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var height = _this.content.getBoundingClientRect().height;\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0] - 1);\n if (xAxis && !colVFtable) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top === e.top ? _this.prevInfo : undefined, true);\n _this.virtualEle.adjustTable(colVFtable ? 0 : x, Math.min(y, _this.offsets[_this.maxBlock]));\n if (colVFtable) {\n _this.virtualEle.adjustMovableTable(x, 0);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(colVFtable ? 0 : x, 0);\n if (colVFtable) {\n _this.header.virtualEle.adjustMovableTable(x, 0);\n }\n }\n };\n };\n VirtualContentRenderer.prototype.dataBound = function () {\n this.parent.notify(events.refreshVirtualFrozenHeight, {});\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else {\n this.activeKey = this.empty;\n }\n };\n VirtualContentRenderer.prototype.rowSelected = function (args, isSelection) {\n if ((this.isSelection || isSelection) && !this.isLastBlockRow(args.rowIndex)) {\n var transform = getTransformValues(this.content.firstElementChild);\n var gridTop = this.parent.element.getBoundingClientRect().top;\n var rowTop = args.row.getBoundingClientRect().top - gridTop;\n var height = this.content.getBoundingClientRect().height;\n var isBottom = height < rowTop;\n var remainHeight = isBottom ? rowTop - height : this.initialRowTop - rowTop;\n var translateY = isBottom ? transform.height - remainHeight : transform.height + remainHeight;\n this.virtualEle.adjustTable(transform.width, translateY);\n var lastRowTop = this.content.querySelector('tbody').lastElementChild.getBoundingClientRect().top - gridTop;\n if (lastRowTop < height) {\n translateY = translateY + (height - (args.row.getBoundingClientRect().top - gridTop));\n this.virtualEle.adjustTable(transform.width, translateY - (this.parent.getRowHeight() / 2));\n }\n }\n this.isSelection = false;\n };\n VirtualContentRenderer.prototype.isLastBlockRow = function (index) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var startIdx = (this.maxPage * this.parent.pageSettings.pageSize) - visibleRowCount;\n return index >= startIdx;\n };\n VirtualContentRenderer.prototype.refreshMaxPage = function () {\n if (this.parent.groupSettings.columns.length && this.parent.vcRows.length) {\n this.maxPage = Math.ceil(this.parent.vcRows.length / this.parent.pageSettings.pageSize);\n }\n };\n VirtualContentRenderer.prototype.setVirtualPageQuery = function (args) {\n var row = this.parent.getContent().querySelector('.e-row');\n if (row && this.parent.isManualRefresh && this.currentInfo.blockIndexes && this.currentInfo.blockIndexes.length === 3) {\n this.vgenerator.startIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n this.vgenerator.currentInfo = extend({}, this.currentInfo);\n this.vgenerator.currentInfo.blockIndexes = this.currentInfo.blockIndexes.slice();\n var includePrevPage = this.vgenerator.includePrevPage = this.currentInfo.blockIndexes[0] % 2 === 0;\n if (includePrevPage) {\n this.vgenerator.startIndex = this.vgenerator.startIndex - this.getBlockSize();\n this.vgenerator.currentInfo.blockIndexes.unshift(this.currentInfo.blockIndexes[0] - 1);\n }\n else {\n this.vgenerator.currentInfo.blockIndexes.push(this.currentInfo.blockIndexes[this.currentInfo.blockIndexes.length - 1] + 1);\n }\n var skip = (this.vgenerator.currentInfo.blockIndexes[0] - 1) * this.getBlockSize();\n var take = this.vgenerator.currentInfo.blockIndexes.length * this.getBlockSize();\n args.query.skip(skip);\n args.query.take(take);\n args.skipPage = true;\n }\n };\n VirtualContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n this.parent[action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(events.dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.rowSelected, this.rowSelected.bind(this));\n this.parent[action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[action](events.selectVirtualRow, this.selectVirtualRow, this);\n this.parent[action](events.virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[action](events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[action](events.virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[action](events.virtualScrollEdit, this.restoreEdit, this);\n this.parent[action](events.virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[action](events.refreshVirtualCache, this.refreshCache, this);\n this.parent[action](events.editReset, this.resetIsedit, this);\n this.parent[action](events.getVirtualData, this.getVirtualData, this);\n this.parent[action](events.virtualScrollEditCancel, this.editCancel, this);\n this.parent[action](events.refreshVirtualMaxPage, this.refreshMaxPage, this);\n this.parent[action](events.setVirtualPageQuery, this.setVirtualPageQuery, this);\n this.parent[action](events.selectRowOnContextOpen, this.selectRowOnContextOpen, this);\n this.parent[action](events.resetVirtualFocus, this.resetVirtualFocus, this);\n this.parent[action](events.refreshVirtualEditFormCells, this.refreshCells, this);\n this.parent[action](events.scrollToEdit, this.scrollToEdit, this);\n var event = this.actions;\n for (var i = 0; i < event.length; i++) {\n this.parent[action](event[i] + \"-begin\", this.onActionBegin, this);\n }\n var fn = function () {\n _this.observer.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); }, _this.onEntered());\n var gObj = _this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n _this.content.scrollTop = gObj.scrollPosition.top;\n var scrollValues = { direction: 'down', sentinel: _this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n _this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n _this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n _this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n };\n VirtualContentRenderer.prototype.scrollToEdit = function (col) {\n var isFrozen = this.parent.isFrozenGrid();\n var allowScroll = true;\n this.validationCheck = true;\n if (this.isAdd && this.content.scrollTop > 0) {\n allowScroll = false;\n var keys = Object.keys(this.offsets);\n this.content.scrollTop = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.offsets[keys.length - 1];\n }\n var row = this.parent.getRowByIndex(this.editedRowIndex);\n if (!row && !isNullOrUndefined(this.editedRowIndex)) {\n if (!row || !this.isRowInView(row)) {\n var rowIndex = this.parent.getRowHeight();\n var scrollTop = this.editedRowIndex * rowIndex;\n if (!isNullOrUndefined(scrollTop)) {\n allowScroll = false;\n this.content.scrollTop = scrollTop;\n }\n }\n }\n if (col && allowScroll) {\n var offset = this.vgenerator.cOffsets[(col.index - this.parent.getVisibleFrozenColumns()) - 1];\n if (!this.parent.enableColumnVirtualization) {\n var header = this.parent.getHeaderContent().querySelector('.e-headercelldiv[e-mappinguid=\"' + col.uid + '\"]');\n offset = isFrozen ? header.parentElement.offsetLeft\n - this.parent.getFrozenVirtualHeader().offsetWidth\n : header.parentElement.offsetLeft;\n }\n if (isFrozen) {\n this.parent.getMovableVirtualContent().scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n else {\n this.content.scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n }\n if (col && !allowScroll) {\n this.validationCol = col;\n }\n };\n VirtualContentRenderer.prototype.refreshCells = function (rowObj) {\n rowObj.cells = this.vgenerator.generateCells();\n };\n VirtualContentRenderer.prototype.resetVirtualFocus = function (e) {\n this.isCancel = e.isCancel;\n };\n /**\n * @param {Object} data - specifies the data\n * @param {Object} data.virtualData -specifies the data\n * @param {boolean} data.isAdd - specifies isAdd\n * @param {boolean} data.isCancel - specifies boolean in cancel\n * @param {boolean} data.isScroll - specifies boolean for scroll\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.getVirtualData = function (data) {\n if (this.isNormaledit) {\n var error = this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n var keys = Object.keys(this.virtualData);\n data.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n if (error) {\n return;\n }\n this.virtualData = keys.length ? this.virtualData : data.virtualData;\n this.getVirtualEditedData(this.virtualData);\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n };\n VirtualContentRenderer.prototype.selectRowOnContextOpen = function (args) {\n this.isContextMenuOpen = args.isOpen;\n };\n VirtualContentRenderer.prototype.editCancel = function (args) {\n var dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[dataIndex];\n }\n };\n VirtualContentRenderer.prototype.editSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n };\n VirtualContentRenderer.prototype.updateCurrentViewData = function (data) {\n var dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[dataIndex] = data;\n }\n };\n VirtualContentRenderer.prototype.actionBegin = function (args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n if (!args.cancel) {\n this.parent.notify(events.refreshVirtualFrozenRows, args);\n }\n };\n VirtualContentRenderer.prototype.virtualCellFocus = function (e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n var ele = document.activeElement;\n if (ele.classList.contains(literals.rowCell)\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n var rowIndex = parseInt(ele.parentElement.getAttribute(literals.ariaRowIndex), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n var scrollEle = this.parent.getContent().firstElementChild;\n if (e.action === 'downArrow') {\n rowIndex += 1;\n }\n else {\n rowIndex -= 1;\n }\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute(literals.ariaColIndex), 10);\n var row = this.parent.getRowByIndex(rowIndex);\n var page = this.parent.pageSettings.currentPage;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var emptyRow = false;\n if (isNullOrUndefined(row)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n this.parent.selectRow(rowIndex);\n }\n }\n };\n VirtualContentRenderer.prototype.editActionBegin = function (e) {\n this.editedRowIndex = e.index;\n var rowData = extend({}, this.getRowObjectByIndex(e.index));\n var keys = Object.keys(this.virtualData);\n e.data = keys.length ? this.virtualData : rowData;\n e.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n };\n VirtualContentRenderer.prototype.refreshCache = function (args) {\n var block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n var index = this.editedRowIndex - ((block - 1) * this.getBlockSize());\n this.vgenerator.cache[block][index].data = args.data;\n if (this.vgenerator.movableCache[block]) {\n this.vgenerator.movableCache[block][index].data = args.data;\n }\n if (this.vgenerator.frozenRightCache[block]) {\n this.vgenerator.frozenRightCache[block][index].data = args.data;\n }\n };\n VirtualContentRenderer.prototype.actionComplete = function (args) {\n var editRequestTypes = ['delete', 'save', 'cancel'];\n var dataActionRequestTypes = ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'];\n if (editRequestTypes.some(function (value) { return value === args.requestType; })) {\n this.refreshOffsets();\n if (this.parent.isFrozenGrid()) {\n this.vgenerator.refreshColOffsets();\n this.parent.contentModule.virtualRenderer.virtualEle.setVirtualHeight();\n }\n else {\n this.refreshVirtualElement();\n }\n }\n if (this.isNormaledit && (dataActionRequestTypes.some(function (value) { return value === args.requestType; })\n || editRequestTypes.some(function (value) { return value === args.requestType; }))) {\n this.isCancel = true;\n this.isAdd = false;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n if (this.parent.editModule) {\n this.parent.editModule.editModule.previousData = undefined;\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterafteropen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n };\n VirtualContentRenderer.prototype.resetIsedit = function () {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n VirtualContentRenderer.prototype.scrollAfterEdit = function () {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.parent.element.querySelector('.e-gridform')) {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n if (editForm || addForm) {\n var rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n var keys = Object.keys(this.virtualData);\n this.virtualData = keys.length ? this.getVirtualEditedData(this.virtualData) : this.getVirtualEditedData(rowData);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.columnModel.filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n VirtualContentRenderer.prototype.addActionBegin = function (args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n var page = this.parent.pageSettings.currentPage;\n if (!this.parent.frozenRows && this.content.scrollTop > 0 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Object} returns the object\n * @hidden\n */\n VirtualContentRenderer.prototype.getRowObjectByIndex = function (index) {\n var data = this.getRowCollection(index, false, true);\n return data;\n };\n VirtualContentRenderer.prototype.getBlockSize = function () {\n return this.parent.pageSettings.pageSize >> 1;\n };\n VirtualContentRenderer.prototype.getBlockHeight = function () {\n return this.getBlockSize() * this.parent.getRowHeight();\n };\n VirtualContentRenderer.prototype.isEndBlock = function (index) {\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n };\n VirtualContentRenderer.prototype.getGroupedTotalBlocks = function () {\n var rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getTotalBlocks = function () {\n return Math.ceil(this.count / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getColumnOffset = function (block) {\n return this.vgenerator.cOffsets[block] | 0;\n };\n VirtualContentRenderer.prototype.getModelGenerator = function () {\n return new VirtualRowModelGenerator(this.parent);\n };\n VirtualContentRenderer.prototype.resetScrollPosition = function (action) {\n if (this.actions.some(function (value) { return value === action; })) {\n this.preventEvent = this.content.scrollTop !== 0;\n this.content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.onActionBegin = function (e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n };\n VirtualContentRenderer.prototype.getRows = function () {\n return this.vgenerator.getRows();\n };\n VirtualContentRenderer.prototype.getRowByIndex = function (index) {\n var row;\n if (isGroupAdaptive(this.parent)) {\n row = this.parent.getDataRows()[index];\n }\n if (this.prevInfo) {\n row = this.getRowCollection(index, false);\n }\n return row;\n };\n VirtualContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n if (isRowObject && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.ariaRowIndex), 10);\n collection = collection.filter(function (m) { return isNullOrUndefined(m.items); });\n }\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[index]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[index].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualContentRenderer.prototype.getVirtualRowIndex = function (index) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n return startIdx + index;\n };\n /**\n * @returns {void}\n * @hidden */\n VirtualContentRenderer.prototype.refreshOffsets = function () {\n var gObj = this.parent;\n var row = 0;\n var bSize = this.getBlockSize();\n var total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[total];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(total)).map(function () { return ++row; });\n for (var i = 0; i < blocks.length; i++) {\n var tmp = (this.vgenerator.cache[blocks[i]] || []).length;\n var rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n var size = !isGroupAdaptive(this.parent) && blocks[i] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[i] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[i]] = (this.offsets[blocks[i] - 1] | 0) + size;\n this.tmpOffsets[blocks[i]] = this.offsets[blocks[i] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n };\n VirtualContentRenderer.prototype.refreshVirtualElement = function () {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n };\n VirtualContentRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var frozenCols = this.parent.getFrozenColumns();\n var fcntColGrp;\n var mcntColGrp;\n if (frozenCols) {\n fcntColGrp = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('col'));\n mcntColGrp = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('col'));\n }\n var rows = [];\n rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var isRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n isRefresh = false;\n }\n var tr = gObj.getDataRows();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = gObj.getNormalizedColumnIndex(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n var colGrp = void 0;\n if (fcntColGrp && mcntColGrp) {\n if (idx >= frozenCols) {\n colGrp = mcntColGrp;\n tr = this.parent.getMovableRows();\n idx = idx - frozenCols;\n }\n else {\n colGrp = fcntColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n }\n if (!isRefresh) {\n var width = void 0;\n if (column.width) {\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n isRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isRefresh || frozenCols) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n };\n VirtualContentRenderer.prototype.selectVirtualRow = function (args) {\n var _this = this;\n args.isAvailable = args.selectedIndex < this.count;\n if (args.isAvailable && !this.isContextMenuOpen && this.activeKey !== 'upArrow'\n && this.activeKey !== 'downArrow' && !this.isSelection && !this.requestTypes.some(function (value) { return value === _this.requestType; })\n && !this.parent.selectionModule.isInteracted) {\n var selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n var rowHeight = this.parent.getRowHeight();\n if (!selectedRow || !this.isRowInView(selectedRow)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n var scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (!isNullOrUndefined(scrollTop)) {\n var direction = this.content.scrollTop < scrollTop ? 'down' : 'up';\n this.selectRowIndex = args.selectedIndex;\n this.content.scrollTop = scrollTop;\n this.isSelectionScroll = this.observer.check(direction);\n }\n }\n }\n if (this.parent.isFrozenGrid() && this.requestType) {\n if (this.parent.getTablesCount() === this.frzIdx) {\n this.requestType = this.empty;\n this.frzIdx = 1;\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.requestType = this.empty;\n }\n };\n VirtualContentRenderer.prototype.isRowInView = function (row) {\n var top = row.getBoundingClientRect().top;\n var bottom = row.getBoundingClientRect().bottom;\n return (top >= this.content.getBoundingClientRect().top && bottom <= this.content.getBoundingClientRect().bottom);\n };\n return VirtualContentRenderer;\n}(ContentRender));\nexport { VirtualContentRenderer };\n/**\n * @hidden\n */\nvar VirtualHeaderRenderer = /** @class */ (function (_super) {\n __extends(VirtualHeaderRenderer, _super);\n function VirtualHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.virtualEle = new VirtualElementHandler();\n _this.isMovable = false;\n _this.gen = new VirtualRowModelGenerator(_this.parent);\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.parent.on(refreshVirtualBlock, function (e) { return e.virtualInfo.sentinelInfo.axis === 'X' ? _this.refreshUI() : null; }, _this);\n return _this;\n }\n VirtualHeaderRenderer.prototype.renderTable = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualEle.content.style.position = 'relative';\n this.virtualEle.renderWrapper();\n this.virtualEle.renderPlaceHolder('absolute');\n };\n VirtualHeaderRenderer.prototype.appendContent = function (table) {\n if (!this.isMovable) {\n this.virtualEle.wrapper.appendChild(table);\n }\n else {\n this.virtualEle.movableWrapper.appendChild(table);\n this.isMovable = false;\n }\n };\n VirtualHeaderRenderer.prototype.refreshUI = function () {\n this.isMovable = this.parent.isFrozenGrid();\n this.setFrozenTable(this.parent.getMovableVirtualContent());\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.refreshUI.call(this);\n this.setFrozenTable(this.parent.getFrozenVirtualContent());\n };\n VirtualHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var needFullRefresh;\n var frozenCols = this.parent.getFrozenColumns();\n var fhdrColGrp;\n var mhdrColGrp;\n if (frozenCols) {\n fhdrColGrp = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('col'));\n mhdrColGrp = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('col'));\n }\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n var colGrp = void 0;\n if (fhdrColGrp && mhdrColGrp) {\n if (idx >= frozenCols) {\n colGrp = mhdrColGrp;\n idx = idx - frozenCols;\n }\n else {\n colGrp = fhdrColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n var tablewidth = void 0;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh && !frozenCols) {\n this.refreshUI();\n }\n }\n if (frozenCols) {\n this.parent.notify(events.columnPositionChanged, {});\n }\n };\n VirtualHeaderRenderer.prototype.setFrozenTable = function (content) {\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization\n && this.parent.contentModule.isXaxis()) {\n this.parent.contentModule\n .setTable(content.querySelector('.' + literals.table));\n }\n };\n VirtualHeaderRenderer.prototype.setDisplayNone = function (col, displayVal) {\n var frozenCols = this.parent.isFrozenGrid();\n var table = this.getTable();\n if (frozenCols && col.getFreezeTableName() === 'movable') {\n table = this.parent.getMovableVirtualHeader().querySelector('.' + literals.table);\n }\n for (var _i = 0, _a = [].slice.apply(table.querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n };\n return VirtualHeaderRenderer;\n}(HeaderRender));\nexport { VirtualHeaderRenderer };\n/**\n * @hidden\n */\nvar VirtualElementHandler = /** @class */ (function () {\n function VirtualElementHandler() {\n }\n VirtualElementHandler.prototype.renderWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderPlaceHolder = function (position) {\n if (position === void 0) { position = 'relative'; }\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: \"position:\" + position });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderFrozenWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) + \"; display: flex\" });\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderFrozenPlaceHolder = function () {\n this.placeholder = createElement('div', { className: 'e-virtualtrack' });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderMovableWrapper = function (height) {\n this.movableWrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.movableContent.appendChild(this.movableWrapper);\n };\n VirtualElementHandler.prototype.renderMovablePlaceHolder = function () {\n this.movablePlaceholder = createElement('div', { className: 'e-virtualtrack' });\n this.movableContent.appendChild(this.movablePlaceholder);\n };\n VirtualElementHandler.prototype.adjustTable = function (xValue, yValue) {\n this.wrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.adjustMovableTable = function (xValue, yValue) {\n this.movableWrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.setMovableWrapperWidth = function (width, full) {\n this.movableWrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setMovableVirtualHeight = function (height, width) {\n this.movablePlaceholder.style.height = height + \"px\";\n this.movablePlaceholder.style.width = width;\n };\n VirtualElementHandler.prototype.setWrapperWidth = function (width, full) {\n this.wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setVirtualHeight = function (height, width) {\n this.placeholder.style.height = height + \"px\";\n this.placeholder.style.width = width;\n };\n VirtualElementHandler.prototype.setFreezeWrapperWidth = function (wrapper, width, full) {\n wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n return VirtualElementHandler;\n}());\nexport { VirtualElementHandler };\n","import { initialLoad } from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from '../renderer/virtual-content-renderer';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { extend, getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { setComplexFieldID, setValidationRuels, getColumnModelByUid } from '../base/util';\n/**\n * Virtual Scrolling class\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.instantiateRenderer = function () {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = this.locator.getService('rendererFactory');\n if (!this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n }\n this.ensurePageSize();\n };\n VirtualScroll.prototype.ensurePageSize = function () {\n var rowHeight = this.parent.getRowHeight();\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(vHeight / rowHeight);\n var height = this.blockSize * 2;\n var size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.columnWidthChanged, this.refreshVirtualElement, this);\n this.parent.on(events.createVirtualValidationForm, this.createVirtualValidationForm, this);\n this.parent.on(events.validateVirtualForm, this.virtualEditFormValidation, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(events.columnWidthChanged, this.refreshVirtualElement);\n this.parent.off(events.createVirtualValidationForm, this.createVirtualValidationForm);\n this.parent.off(events.validateVirtualForm, this.virtualEditFormValidation);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.getCurrentEditedData = function (prevData) {\n var data = {\n virtualData: extend({}, {}, prevData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n return data.virtualData;\n };\n VirtualScroll.prototype.createVirtualValidationForm = function (e) {\n var gObj = this.parent;\n if (gObj.enableVirtualization && gObj.editSettings.mode === 'Normal') {\n var cols = gObj.columns;\n var rowRenderer = new RowRenderer(this.locator, null, this.parent);\n var rowObj = extend({}, {}, gObj.getRowObjectFromUID(e.uid), true);\n gObj.notify(events.refreshVirtualEditFormCells, rowObj);\n var args = e.argsCreator(this.getCurrentEditedData(e.prevData), {}, false);\n args.isCustomFormValidation = true;\n args.row = rowRenderer.render(rowObj, cols);\n e.renderer.update(args);\n var rules = {};\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible) {\n continue;\n }\n if (cols[i].validationRules) {\n setValidationRuels(cols[i], 0, rules, {}, {}, cols.length, true);\n }\n }\n args.form.classList.add('e-virtual-validation');\n gObj.editModule.virtualFormObj = gObj.editModule.createFormObj(args.form, rules);\n }\n };\n VirtualScroll.prototype.virtualEditFormValidation = function (args) {\n var gObj = this.parent;\n var error = gObj.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n if (gObj.editModule.virtualFormObj) {\n if (error && error.style.display !== 'none') {\n var errorDomRect = error.getBoundingClientRect();\n var forms = gObj.element.querySelectorAll('.e-gridform');\n var form = forms[0];\n var contentLeft = gObj.getContent().getBoundingClientRect().left;\n if (forms.length > 1) {\n form = gObj.getFrozenMode() !== 'Right' ? forms[1] : forms[0];\n contentLeft = gObj.getMovableVirtualContent().getBoundingClientRect().left;\n }\n if (errorDomRect.left < contentLeft || errorDomRect.right > gObj.element.offsetWidth) {\n var tooltip = form.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx }, true);\n }\n }\n else if (gObj.editModule.virtualFormObj && (!error || error.style.display === 'none')) {\n var existingErrors = gObj.editModule.virtualFormObj.element.querySelectorAll('.e-tooltip-wrap:not([style*=\"display: none\"])');\n for (var i = 0; i < existingErrors.length; i++) {\n remove(existingErrors[i]);\n }\n this.setEditedDataToValidationForm(gObj.editModule.virtualFormObj.element, this.getCurrentEditedData(args.prevData));\n args.isValid = gObj.editModule.virtualFormObj.validate();\n if (!args.isValid) {\n var tooltip = gObj.editModule.virtualFormObj.element.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx });\n }\n }\n }\n };\n VirtualScroll.prototype.scrollToEdit = function (tooltip, args, isRenderer) {\n var gObj = this.parent;\n if (tooltip) {\n var cols = gObj.columnModel;\n var field = setComplexFieldID(tooltip.id).split('_')[0];\n var col = gObj.getColumnByField(field);\n var scrollTop = this.parent.getContent().firstElementChild.scrollTop;\n var row = gObj.getRowByIndex(args.editIdx);\n if (isRenderer || !col || (!isNullOrUndefined(args.addIdx) && scrollTop > 0) || (!isNullOrUndefined(args.editIdx) && !row)) {\n var validationCol = void 0;\n for (var i = 0; i < cols.length && !col; i++) {\n if (cols[i].field === field) {\n validationCol = cols[i];\n break;\n }\n }\n if (isRenderer) {\n validationCol = col;\n }\n this.parent.notify(events.scrollToEdit, validationCol);\n }\n }\n };\n VirtualScroll.prototype.setEditedDataToValidationForm = function (form, editedData) {\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col = getColumnModelByUid(this.parent, inputs[i].getAttribute('e-mappinguid'));\n var value = getValue(col.field, editedData);\n value = isNullOrUndefined(value) ? '' : value;\n inputs[i].value = value;\n }\n };\n VirtualScroll.prototype.refreshVirtualElement = function (args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n var renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '
    ${name}
    ${_fm_modified}
    ' +\n '${size}'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: ''\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length == 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addFocus(0);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU, isBlazor } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, Browser, isNullOrUndefined, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isCollide } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ColorPickerInput } from './color-picker';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar BaseQuickToolbar = /** @class */ (function () {\n function BaseQuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.isDOMElement = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.popupRenderer = this.renderFactory.getRenderer(RenderType.Popup);\n this.dropDownButtons = new DropDownButtons(this.parent, this.locator);\n this.colorPickerObj = new ColorPickerInput(this.parent, this.locator);\n }\n BaseQuickToolbar.prototype.appendPopupContent = function () {\n this.toolbarElement = this.parent.createElement('div', { className: classes.CLS_QUICK_TB });\n this.element.appendChild(this.toolbarElement);\n };\n /**\n * render method\n *\n * @param {IQuickToolbarOptions} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.render = function (args) {\n var className;\n if (args.popupType === 'Image') {\n className = classes.CLS_IMAGE_POP;\n }\n else if (args.popupType === 'Inline') {\n className = classes.CLS_INLINE_POP;\n }\n else {\n className = '';\n }\n var popupId = getUniqueID(args.popupType + '_Quick_Popup');\n this.stringItems = args.toolbarItems;\n this.element = this.parent.createElement('div', { id: popupId, className: className + ' ' + classes.CLS_RTE_ELEMENTS });\n this.element.setAttribute('aria-owns', this.parent.getID());\n this.appendPopupContent();\n this.createToolbar(args.toolbarItems, args.mode);\n this.popupRenderer.renderPopup(this);\n this.addEventListener();\n };\n BaseQuickToolbar.prototype.createToolbar = function (items, mode) {\n this.quickTBarObj = new BaseToolbar(this.parent, this.locator);\n this.quickTBarObj.render({\n container: 'quick',\n target: this.toolbarElement,\n items: items,\n mode: mode\n });\n this.quickTBarObj.toolbarObj.refresh();\n };\n BaseQuickToolbar.prototype.setPosition = function (e) {\n var x;\n var y;\n var imgWrapper = closest(e.target, '.e-img-caption');\n var target = !isNOU(imgWrapper) ? imgWrapper : e.target;\n addClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n var targetOffsetTop = target.offsetTop;\n var parentOffsetTop = window.pageYOffset + e.parentData.top;\n if ((targetOffsetTop - e.editTop) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) - e.popHeight - 5;\n }\n else if (((e.editTop + e.editHeight) - (targetOffsetTop + target.offsetHeight)) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) + target.offsetHeight + 5;\n }\n else {\n y = e.y;\n }\n if (target.offsetWidth > e.popWidth) {\n x = (target.offsetWidth / 2) - (e.popWidth / 2) + e.parentData.left + target.offsetLeft;\n }\n else {\n x = e.parentData.left + target.offsetLeft;\n }\n this.popupObj.position.X = ((x + e.popWidth) > e.parentData.right) ? e.parentData.right - e.popWidth : x;\n this.popupObj.position.Y = (y >= 0) ? y : e.y + 5;\n this.popupObj.dataBind();\n removeClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n };\n BaseQuickToolbar.prototype.checkCollision = function (e, viewPort, type) {\n var x;\n var y;\n var parentTop = e.parentData.top;\n var contentTop = e.windowY + parentTop + e.tBarElementHeight;\n var collision = [];\n if (viewPort === 'document') {\n collision = isCollide(e.popup);\n }\n else {\n collision = isCollide(e.popup, e.parentElement);\n }\n for (var i = 0; i < collision.length; i++) {\n switch (collision[i]) {\n case 'top':\n if (viewPort === 'document') {\n y = e.windowY;\n }\n else {\n y = (window.pageYOffset + parentTop) + e.tBarElementHeight;\n }\n break;\n case 'bottom': {\n var posY = void 0;\n if (viewPort === 'document') {\n if (type === 'inline') {\n posY = (e.y - e.popHeight - 10);\n }\n else {\n if ((e.windowHeight - (parentTop + e.tBarElementHeight)) > e.popHeight) {\n if ((contentTop - e.windowHeight) > e.popHeight) {\n posY = (contentTop + (e.windowHeight - parentTop)) - e.popHeight;\n }\n else {\n posY = contentTop;\n }\n }\n else {\n posY = e.windowY + (parentTop + e.tBarElementHeight);\n }\n }\n }\n else {\n if (e.target.tagName !== 'IMG') {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 10;\n }\n else {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 5;\n }\n }\n y = posY;\n break;\n }\n case 'right':\n if (type === 'inline') {\n x = window.pageXOffset + (e.windowWidth - (e.popWidth + e.bodyRightSpace + 10));\n }\n else {\n x = e.x - e.popWidth;\n }\n break;\n case 'left':\n if (type === 'inline') {\n x = 0;\n }\n else {\n x = e.parentData.left;\n }\n break;\n }\n }\n this.popupObj.position.X = (x) ? x : this.popupObj.position.X;\n this.popupObj.position.Y = (y) ? y : this.popupObj.position.Y;\n this.popupObj.dataBind();\n };\n /**\n * showPopup method\n *\n * @param {number} x - specifies the x value\n * @param {number} y - specifies the y value\n * @param {Element} target - specifies the element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.showPopup = function (x, y, target) {\n var _this = this;\n var eventArgs = isBlazor() ? { cancel: false, targetElement: target } :\n { popup: this.popupObj, cancel: false, targetElement: target };\n this.parent.trigger(events.beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {\n if (!beforeQuickToolbarArgs.cancel) {\n var editPanelTop = void 0;\n var editPanelHeight = void 0;\n var bodyStyle = window.getComputedStyle(document.body);\n var bodyRight = parseFloat(bodyStyle.marginRight.split('px')[0]) + parseFloat(bodyStyle.paddingRight.split('px')[0]);\n var windowHeight = window.innerHeight;\n var windowWidth = window.innerWidth;\n var parent_1 = _this.parent.element;\n var toolbarAvail = !isNullOrUndefined(_this.parent.getToolbar());\n var tbHeight = toolbarAvail && _this.parent.toolbarModule.getToolbarHeight();\n var expTBHeight = toolbarAvail && _this.parent.toolbarModule.getExpandTBarPopHeight();\n var tBarHeight = (toolbarAvail) ? (tbHeight + expTBHeight) : 0;\n addClass([_this.element], [classes.CLS_HIDE]);\n if (Browser.isDevice && !isIDevice()) {\n addClass([_this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (_this.parent.iframeSettings.enable) {\n var cntEle = _this.contentRenderer.getPanel().contentWindow;\n editPanelTop = cntEle.pageYOffset;\n editPanelHeight = cntEle.innerHeight;\n }\n else {\n var cntEle = closest(target, '.' + classes.CLS_RTE_CONTENT);\n editPanelTop = (cntEle) ? cntEle.scrollTop : 0;\n editPanelHeight = (cntEle) ? cntEle.offsetHeight : 0;\n }\n if (!_this.parent.inlineMode.enable && !closest(target, 'table')) {\n _this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);\n _this.parent.enableToolbarItem(['Undo', 'Redo']);\n }\n append([_this.element], document.body);\n _this.popupObj.position.X = x + 20;\n _this.popupObj.position.Y = y + 20;\n _this.popupObj.dataBind();\n _this.popupObj.element.classList.add('e-popup-open');\n _this.dropDownButtons.renderDropDowns({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n _this.colorPickerObj.renderColorPickerInput({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n var showPopupData = {\n x: x, y: y,\n target: target,\n editTop: editPanelTop,\n editHeight: editPanelHeight,\n popup: _this.popupObj.element,\n popHeight: _this.popupObj.element.offsetHeight,\n popWidth: _this.popupObj.element.offsetWidth,\n parentElement: parent_1,\n bodyRightSpace: bodyRight,\n windowY: window.pageYOffset,\n windowHeight: windowHeight,\n windowWidth: windowWidth,\n parentData: parent_1.getBoundingClientRect(),\n tBarElementHeight: tBarHeight\n };\n if (target.tagName === 'IMG') {\n _this.setPosition(showPopupData);\n }\n if (!_this.parent.inlineMode.enable) {\n _this.checkCollision(showPopupData, 'parent', '');\n }\n _this.checkCollision(showPopupData, 'document', ((_this.parent.inlineMode.enable) ? 'inline' : ''));\n _this.popupObj.element.classList.remove('e-popup-open');\n removeClass([_this.element], [classes.CLS_HIDE]);\n _this.popupObj.show({ name: 'ZoomIn', duration: (Browser.isIE ? 250 : 400) });\n setStyleAttribute(_this.element, {\n maxWidth: window.outerWidth + 'px'\n });\n addClass([_this.element], [classes.CLS_POP]);\n _this.isDOMElement = true;\n }\n });\n };\n /**\n * hidePopup method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.hidePopup = function () {\n var viewSourcePanel = this.parent.sourceCodeModule.getViewPanel();\n if (Browser.isDevice && !isIDevice()) {\n removeClass([this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (!isNullOrUndefined(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {\n if (isNullOrUndefined(viewSourcePanel) || viewSourcePanel.style.display === 'none') {\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n }\n }\n this.removeEleFromDOM();\n this.isDOMElement = false;\n };\n /**\n * @param {string} item - specifies the string value\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addQTBarItem = function (item, index) {\n this.quickTBarObj.toolbarObj.addItems(this.quickTBarObj.getItems(item, 'toolbar'), index);\n };\n /**\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeQTBarItem = function (index) {\n this.quickTBarObj.toolbarObj.removeItems(index);\n };\n BaseQuickToolbar.prototype.removeEleFromDOM = function () {\n var element = this.popupObj.element;\n if (this.isDOMElement) {\n this.dropDownButtons.destroyDropDowns();\n this.colorPickerObj.destroyColorPicker();\n removeClass([this.element], [classes.CLS_POP]);\n detach(element);\n var args = isBlazor() ? { element: this.popupObj.element } : this.popupObj;\n this.parent.trigger(events.quickToolbarClose, args);\n }\n };\n BaseQuickToolbar.prototype.updateStatus = function (args) {\n var options = {\n args: args,\n dropDownModule: this.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.element),\n tbItems: this.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options, true, this.parent);\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.parent.getBaseToolbarObject(), this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * Destroys the Quick toolbar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.destroy = function () {\n if (this.popupObj && !this.popupObj.isDestroyed) {\n this.popupObj.destroy();\n this.removeEleFromDOM();\n }\n this.removeEventListener();\n };\n /**\n * addEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the model element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n if (e.newProp.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n else {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n break;\n }\n }\n }\n };\n /**\n * removeEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.inlineMode.enable) {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n };\n return BaseQuickToolbar;\n}());\nexport { BaseQuickToolbar };\n","import { Popup } from '@syncfusion/ej2-popups';\nimport { CLS_QUICK_POP } from '../base/classes';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `Popup renderer` module is used to render popup in RichTextEditor.\n *\n * @hidden\n\n */\nvar PopupRenderer = /** @class */ (function () {\n /**\n * Constructor for popup renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function PopupRenderer(parent) {\n this.parent = parent;\n }\n PopupRenderer.prototype.quickToolbarOpen = function () {\n var args = isBlazor() ? { element: this.popupObj.element } : this.popupObj;\n this.parent.trigger(events.quickToolbarOpen, args);\n };\n /**\n * renderPopup method\n *\n * @param {BaseQuickToolbar} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPopup = function (args) {\n this.setPanel(args.element);\n this.renderPanel();\n args.popupObj = new Popup(args.element, {\n targetType: 'relative',\n relateTo: this.parent.element,\n open: this.quickToolbarOpen.bind(this)\n });\n this.popupObj = args.popupObj;\n args.popupObj.hide();\n };\n /**\n * The function is used to add popup class in Quick Toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_QUICK_POP);\n };\n /**\n * Get the popup element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.getPanel = function () {\n return this.popupPanel;\n };\n /**\n * Set the popup element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.setPanel = function (panel) {\n this.popupPanel = panel;\n };\n return PopupRenderer;\n}());\nexport { PopupRenderer };\n","import { select, isNullOrUndefined, Browser, addClass, removeClass, EventHandler, closest } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { pageYOffset, hasClass, isIDevice } from '../base/util';\nimport { BaseQuickToolbar } from './base-quick-toolbar';\nimport { PopupRenderer } from '../renderer/popup-renderer';\nimport { CLS_INLINE_POP, CLS_INLINE } from '../base/classes';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar QuickToolbar = /** @class */ (function () {\n function QuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.renderFactory.addRenderer(RenderType.Popup, new PopupRenderer(this.parent));\n this.addEventListener();\n }\n QuickToolbar.prototype.formatItems = function (items) {\n var formattedItems = [];\n items.forEach(function (item) {\n if (typeof item === 'string') {\n switch (item.toLocaleLowerCase()) {\n case 'open':\n formattedItems.push('openLink');\n break;\n case 'edit':\n formattedItems.push('editLink');\n break;\n case 'unlink':\n formattedItems.push('removeLink');\n break;\n default:\n formattedItems.push(item);\n break;\n }\n }\n else {\n formattedItems.push(item);\n }\n });\n return formattedItems;\n };\n QuickToolbar.prototype.getQTBarOptions = function (popType, mode, items, type) {\n return {\n popupType: popType,\n toolbarItems: items,\n mode: mode,\n renderType: type\n };\n };\n /**\n * createQTBar method\n *\n * @param {string} popupType - specifies the string value\n * @param {string} mode - specifies the string value.\n * @param {string} items - specifies the string.\n * @param {RenderType} type - specifies the render type.\n * @returns {BaseQuickToolbar} - specifies the quick toolbar\n * @hidden\n\n */\n QuickToolbar.prototype.createQTBar = function (popupType, mode, items, type) {\n if (items.length < 1) {\n return null;\n }\n var qTBar = new BaseQuickToolbar(this.parent, this.locator);\n qTBar.render(this.getQTBarOptions(popupType, mode, this.formatItems(items), type));\n return qTBar;\n };\n QuickToolbar.prototype.initializeQuickToolbars = function () {\n this.parent.quickToolbarModule = this;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n if (this.parent.inlineMode.enable && this.parent.inlineMode.onSelection && isIDevice()) {\n EventHandler.add(this.contentRenderer.getDocument(), 'selectionchange', this.selectionChangeHandler, this);\n }\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.onMouseDown = function (e) {\n this.parent.isBlur = false;\n this.parent.isRTE = true;\n };\n QuickToolbar.prototype.renderQuickToolbars = function () {\n if (this.linkQTBar || this.imageQTBar || this.textQTBar || this.tableQTBar) {\n return;\n }\n this.linkQTBar = this.createQTBar('Link', 'Scrollable', this.parent.quickToolbarSettings.link, RenderType.LinkToolbar);\n this.renderFactory.addRenderer(RenderType.LinkToolbar, this.linkQTBar);\n this.textQTBar = this.createQTBar('Text', 'Scrollable', this.parent.quickToolbarSettings.text, RenderType.TextToolbar);\n this.renderFactory.addRenderer(RenderType.TextToolbar, this.textQTBar);\n this.imageQTBar = this.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n this.renderFactory.addRenderer(RenderType.ImageToolbar, this.imageQTBar);\n this.tableQTBar = this.createQTBar('Table', 'MultiRow', this.parent.quickToolbarSettings.table, RenderType.TableToolbar);\n this.renderFactory.addRenderer(RenderType.TableToolbar, this.tableQTBar);\n if (this.linkQTBar) {\n EventHandler.add(this.linkQTBar.element, 'mousedown', this.onMouseDown, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n }\n };\n QuickToolbar.prototype.renderInlineQuickToolbar = function () {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.inlineQTBar = this.createQTBar('Inline', 'MultiRow', this.parent.toolbarSettings.items, RenderType.InlineToolbar);\n this.renderFactory.addRenderer(RenderType.InlineToolbar, this.inlineQTBar);\n EventHandler.add(this.inlineQTBar.element, 'mousedown', this.onMouseDown, this);\n }\n };\n /**\n * Method for showing the inline quick toolbar\n *\n * @param {number} x -specifies the value of x.\n * @param {number} y - specifies the y valu.\n * @param {HTMLElement} target - specifies the target element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {\n if (this.parent.readonly) {\n return;\n }\n this.inlineQTBar.showPopup(x, y, target);\n };\n /**\n * Method for hidding the inline quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideInlineQTBar = function () {\n if (this.inlineQTBar && !hasClass(this.inlineQTBar.element, 'e-popup-close')) {\n this.inlineQTBar.hidePopup();\n }\n };\n /**\n * Method for hidding the quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideQuickToolbars = function () {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close') && document.body.contains(this.linkQTBar.element)) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close') && document.body.contains(this.imageQTBar.element)) {\n this.imageQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close') && document.body.contains(this.tableQTBar.element)) {\n this.tableQTBar.hidePopup();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.deBounce = function (x, y, target) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.showInlineQTBar(x, y, target);\n }, 1000);\n };\n QuickToolbar.prototype.mouseUpHandler = function (e) {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var range = this.parent.getRange();\n var target = e.args.target;\n if (isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n if (isIDevice() && e.touchData && e.touchData.prevClientX !== e.touchData.clientX\n && e.touchData.prevClientY !== e.touchData.clientY) {\n return;\n }\n this.hideInlineQTBar();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n if (target.nodeName === 'TEXTAREA') {\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n else {\n var closestAnchor = closest(target, 'a');\n target = closestAnchor ? closestAnchor : target;\n if (target.tagName !== 'IMG' && target.tagName !== 'A' && (!closest(target, 'td,th') || !range.collapsed)) {\n if (this.parent.inlineMode.onSelection && range.collapsed) {\n return;\n }\n this.target = target;\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n }\n }\n }\n };\n QuickToolbar.prototype.keyDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.inlineQTBarMouseDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.keyUpHandler = function (e) {\n if (this.parent.inlineMode.enable && !Browser.isDevice) {\n if (this.parent.inlineMode.onSelection) {\n return;\n }\n var args = e.args;\n this.deBounce(this.offsetX, this.offsetY, args.target);\n }\n };\n QuickToolbar.prototype.selectionChangeHandler = function (e) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.onSelectionChange(e);\n }, 1000);\n };\n QuickToolbar.prototype.onSelectionChange = function (e) {\n if (!isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n return;\n }\n var selection = this.contentRenderer.getDocument().getSelection();\n if (!selection.isCollapsed) {\n this.mouseUpHandler({ args: e });\n }\n };\n /**\n * getInlineBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.getInlineBaseToolbar = function () {\n return this.inlineQTBar && this.inlineQTBar.quickTBarObj;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.destroy = function () {\n if (this.linkQTBar) {\n EventHandler.remove(this.linkQTBar.element, 'mousedown', this.onMouseDown);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n this.imageQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n if (isIDevice()) {\n EventHandler.remove(document, 'selectionchange', this.selectionChangeHandler);\n }\n this.inlineQTBar.destroy();\n }\n this.removeEventListener();\n };\n QuickToolbar.prototype.wireInlineQTBarEvents = function () {\n this.parent.on(events.mouseUp, this.mouseUpHandler, this);\n this.parent.on(events.mouseDown, this.inlineQTBarMouseDownHandler, this);\n this.parent.on(events.keyDown, this.keyDownHandler, this);\n this.parent.on(events.keyUp, this.keyUpHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseUpHandler, this);\n this.parent.on(events.renderInlineToolbar, this.renderInlineQuickToolbar, this);\n };\n QuickToolbar.prototype.unWireInlineQTBarEvents = function () {\n this.parent.off(events.mouseUp, this.mouseUpHandler);\n this.parent.off(events.mouseDown, this.inlineQTBarMouseDownHandler);\n this.parent.off(events.keyDown, this.keyDownHandler);\n this.parent.off(events.keyUp, this.keyUpHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseUpHandler);\n this.parent.off(events.renderInlineToolbar, this.renderInlineQuickToolbar);\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.toolbarUpdated = function (args) {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n };\n /**\n * addEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeQuickToolbars, this);\n this.parent.on(events.mouseDown, this.renderQuickToolbars, this);\n this.parent.on(events.toolbarUpdated, this.toolbarUpdated, this);\n this.parent.on(events.drop, this.renderQuickToolbars, this);\n this.wireInlineQTBarEvents();\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n this.parent.on(events.focusChange, this.hideQuickToolbars, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n };\n QuickToolbar.prototype.onKeyDown = function (e) {\n var args = e.args;\n if (args.which === 8 || args.which === 46) {\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.onIframeMouseDown = function () {\n this.hideQuickToolbars();\n this.hideInlineQTBar();\n };\n QuickToolbar.prototype.setRtl = function (args) {\n if (this.inlineQTBar) {\n this.inlineQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.linkQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n /**\n * removeEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.initializeQuickToolbars);\n this.parent.off(events.mouseDown, this.renderQuickToolbars);\n this.parent.off(events.toolbarUpdated, this.toolbarUpdated);\n this.parent.off(events.drop, this.renderQuickToolbars);\n this.unWireInlineQTBarEvents();\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n this.parent.off(events.focusChange, this.hideQuickToolbars);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.rtlMode, this.setRtl);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.quickToolbarSettings)) {\n for (var _i = 0, _a = Object.keys(e.newProp.quickToolbarSettings); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'actionOnScroll':\n if (e.newProp.quickToolbarSettings.actionOnScroll === 'none') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n else {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.inlineQTBar) {\n removeClass([this.parent.element], [CLS_INLINE]);\n this.unWireInlineQTBarEvents();\n this.hideInlineQTBar();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.wireInlineQTBarEvents();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n QuickToolbar.prototype.getModuleName = function () {\n return 'quickToolbar';\n };\n return QuickToolbar;\n}());\nexport { QuickToolbar };\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, isBlazor, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function () {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n document.body.appendChild(_this.popupObj.element);\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n var _this = this;\n if (this.mode === 'CheckBox' && this.itemTemplate && (isBlazor() && this.isServerRendered) &&\n this.mainData && this.mainData.length > 0) {\n setTimeout(function () {\n _this.refreshListItems(null);\n if (_this.mode === 'CheckBox') {\n _this.removeFocus();\n }\n _this.notify('reOrder', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', e: _this });\n }, this.mainData.length < 100 ? 100 : this.mainData.length);\n }\n else {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-multiselectable': 'true',\n 'aria-activedescendant': 'null',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n var disableStatus = (this.inputElement.disabled) ? true : false;\n attributes(this.inputElement, this.getAriaAttributes());\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (!this.isTyped && this.element.tagName === 'SELECT') {\n this.renderSelectElement(this.element, list);\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value !== null && this.value.length > 0) {\n var items = [];\n for (var k = 0; k < this.value.length; k++) {\n var itemsData = this.getDataByValue(this.value[k]);\n if (itemsData) {\n // eslint-disable-next-line\n items.push(itemsData[this.fields.value]); // remove the condition for hybrid\n }\n }\n if (items.length === 0) {\n this.setProperties({ 'value': null });\n }\n }\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n this.updateActionList(ulElement, list, e);\n if (isBlazor() && this.isServerRendered && this.allowFiltering && this.mode === 'CheckBox') {\n this.removeFocus();\n }\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value && this.value.length > 0) {\n this.updateVal(this.value, null, 'value');\n this.addValidInputClass();\n this.isDynamicDataChange = false;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering &&\n !(isBlazor() && this.isServerRendered)) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (!isNullOrUndefined(this.mainData) && this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown();\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n }\n else {\n this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.firstElementChild.getAttribute('aria-checked');\n if (isNullOrUndefined(ariaValue) || ariaValue === 'false') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup();\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n this.isTyped = true;\n if (this.targetElement().trim() === '') {\n this.isTyped = false;\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = [this.inputElement.value];\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup();\n }\n else {\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n this.isTyped = false;\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true, false, true, true);\n this.hidePopup();\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup();\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n this.isTyped = false;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup();\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n this.refreshPopup();\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n this.list.focus();\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n this.list.focus();\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup();\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n if (isBlazor() && _this.isServerRendered) {\n // eslint-disable-next-line max-len\n var removedValues = [].concat([], removeVal);\n _this.setProperties({ value: removedValues.length === 0 ? null : removedValues }, true);\n }\n else {\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n }\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.notify('updatelist', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', li: element_1, e: eve });\n attributes(_this.inputElement, { 'aria-activedescendant': element_1.id });\n if ((_this.value && _this.value.length !== _this.mainData.length)\n && (_this.mode === 'CheckBox' && _this.showSelectAll && !(_this.isSelectAll || isClearAll))) {\n _this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: 'uncheck' });\n }\n }\n if (_this.hideSelectedItem && _this.fields.groupBy) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (isBlazor() && _this.isServerRendered && (isNullOrUndefined(_this.value) || _this.value.length === 0)) {\n _this.updatedataValueItems(eve);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'true');\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = (isBlazor() && this.isServerRendered) ? JSON.parse(JSON.stringify(this.getDataByValue(value)))\n : this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, false, false, false);\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (eventArgs.setClass && typeof eventArgs.setClass === 'string' && (isBlazor() && _this.isServerRendered)) {\n addClass([chip], eventArgs.setClass);\n }\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (_this.itemTemplate && (isBlazor() && _this.isServerRendered)) {\n setTimeout(function () {\n _this.mainList = _this.ulElement;\n }, 0);\n }\n else if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n if (this.value === null && isBlazor() && this.isServerRendered) {\n break;\n }\n }\n }\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mousemove', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup();\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isTyped = false;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n this.hiddenElement.innerHTML = '';\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (!(isBlazor() && this.isServerRendered) && isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n this.hiddenElement.innerHTML += '';\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n addClass([li], HIDE_LIST);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && this.mainList.childElementCount < this.ulElement.childElementCount) {\n this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n if (isBlazor() && _this.isServerRendered) {\n _this.checkPlaceholderSize();\n _this.makeTextBoxEmpty();\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n if (isBlazor() && this.isServerRendered && this.value && this.list &&\n (this.value.length === this.list.querySelectorAll('li.e-list-item').length ||\n this.value.length === this.maximumSelectionLength)) {\n this.updatedataValueItems(e);\n this.checkPlaceholderSize();\n }\n if (isBlazor() && this.isServerRendered) {\n this.checkPlaceholderSize();\n this.makeTextBoxEmpty();\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n selectedItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n selectItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'));\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox') {\n var ariaCheck = element.firstElementChild.getAttribute('aria-checked');\n if (ariaCheck === 'false' || isNullOrUndefined(ariaCheck)) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n if (this.overAllClear.style.display !== 'none') {\n this.spinnerElement = this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var compiledString = compile(remainContent);\n var totalCompiledString = compile(l10n.getConstant('totalCountTemplate'));\n // eslint-disable-next-line\n var remainCompildTemp = compiledString({ 'count': this.value.length }, this, 'overflowCountTemplate', null, !this.isStringTemplate, null, raminElement);\n if (remainCompildTemp && remainCompildTemp.length > 0) {\n raminElement.appendChild(remainCompildTemp[0]);\n }\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, compiledString, totalCompiledString);\n }\n }\n else {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, compiledString, totalCompiledString, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n // eslint-disable-next-line\n var remainTemp = compiledString({ 'count': remaining }, this, 'overflowCountTemplate', null, !this.isStringTemplate, null, raminElement);\n // eslint-disable-next-line\n var totalTemp = totalCompiledString({ 'count': remaining }, this, 'totalCountTemplate', null, !this.isStringTemplate, null, raminElement);\n raminElement.appendChild((viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ?\n remainTemp && remainTemp[0] : totalTemp && totalTemp[0]);\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, compiledString, totalCompiledString) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n EventHandler.remove(this.componentWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? event.target : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (!(isBlazor() && _this.isServerRendered)) {\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }\n }, 0);\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (!isNullOrUndefined(prop) && (isNullOrUndefined(prop.dataSource)\n || (!(prop.dataSource instanceof DataManager) && prop.dataSource.length === 0))) {\n this.selectData = null;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length && !(isBlazor() && this.isServerRendered)) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function () {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.isTyped = false;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function () {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if ((isBlazor() && _this.isServerRendered) && _this.itemTemplate) {\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, false);\n if (_this.mode !== 'CheckBox' && _this.list) {\n _this.refreshSelection();\n }\n }\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown();\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'aria-placeholder', 'placeholder'];\n var length = temp.length;\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n if (this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The MultiSelect allows the user to pick a values from the predefined list of values.\n * ```\n * \n * ```\n */\nvar MultiSelectComponent = /** @class */ (function (_super) {\n __extends(MultiSelectComponent, _super);\n function MultiSelectComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n MultiSelectComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return MultiSelectComponent;\n}(MultiSelect));\nexport { MultiSelectComponent };\napplyMixins(MultiSelectComponent, [ComponentBase, React.Component]);\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocorrect': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive', 'aria-valuenow': ''\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide')) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: _this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n });\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(this.promptChar))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: this.inputObj.container,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: this.inputObj.container\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if ((!event.ctrlKey) || (event.ctrlKey && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n attributes(this.element, { 'aria-valuenow': this.element.value });\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[curMask])) {\n var customValStr = this.customCharacters[curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n }\n else if (!isNullOrUndefined(this.regExpCollec[curMask]) && keyValue.match(new RegExp(this.regExpCollec[curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n }\n else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n var _this = this;\n if (this.element.tagName.toLowerCase() === 'input') {\n var checkBlazor = isBlazor() && this.isServerRendered;\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n if (checkBlazor && Browser.isIE === true) {\n setTimeout(function () {\n _this.resetMaskedTextBox();\n });\n }\n else {\n this.resetMaskedTextBox();\n }\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder) {\n this.setMaskPlaceholder(false, false);\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete',\n 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\nexport { MaskedTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React MaskedTextBox Component\n * ```html\n * \n * ```\n */\nvar MaskedTextBoxComponent = /** @class */ (function (_super) {\n __extends(MaskedTextBoxComponent, _super);\n function MaskedTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.controlAttributes = ['name'];\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n MaskedTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return MaskedTextBoxComponent;\n}(MaskedTextBox));\nexport { MaskedTextBoxComponent };\napplyMixins(MaskedTextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, addRemoveEventListener } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * Footer module is used to render grid content\n *\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 * @returns {void}\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: literals.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 * @returns {void}\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('.' + literals.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(literals.colGroup));\n var hdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCol = (hdr.querySelector(literals.colGroup).cloneNode(true));\n frTable.insertBefore(frCol, frTable.querySelector(literals.tbody));\n this.frozenRightContent.appendChild(frTable);\n this.frTable = frTable;\n }\n this.movableContent.appendChild(table);\n remove(table.querySelector(literals.colGroup));\n var colGroup = ((this.parent.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n table.insertBefore(colGroup, table.querySelector(literals.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 // eslint-disable-next-line max-len\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().getElementsByClassName('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 .getElementsByClassName('e-summaryrow'));\n var frozenCnt = void 0;\n if (frzCols) {\n frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-left-footercontent')\n .getElementsByClassName('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 .getElementsByClassName('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('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n // eslint-disable-next-line max-len\n var isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector(literals.colGroup).cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns(), this.parent);\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector(literals.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('.' + literals.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 left = this.parent.getVisibleFrozenLeftCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getVisibleMovableCount();\n var right = this.parent.getVisibleFrozenRightCount();\n var isDrag = this.parent.isRowDragable() && !(this.parent.getFrozenMode() === 'Right') ? 1 : 0;\n if (left && index < (left + isDrag)) {\n return this.freezeTable.querySelector(literals.colGroup).children[index];\n }\n else if (right && (index >= (left + movable + isDrag))) {\n return this.frTable.querySelector(literals.colGroup).children[index - (left ? (left + movable + isDrag) :\n (left + movable))];\n }\n return this.getColGroup().children[index - (left ? (left + isDrag) : left)];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: colGroupRefresh, handler: this.refreshCol },\n { event: columnWidthChanged, handler: this.onWidthChange },\n { event: scroll, handler: this.onScroll },\n { event: columnVisibilityChanged, handler: this.columnVisibilityChanged },\n { event: refreshFooterRenderer, handler: this.refreshFooterRenderer }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n addRemoveEventListener(this.parent, this.evtHandlers, false);\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 isFiltered = false;\n if (!this.parent.renderModule.data.isRemote() && this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n isFiltered = true;\n }\n var currentViewData = this.parent.dataSource instanceof Array ?\n (isFiltered ? this.parent.getFilteredRecords() : 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 // eslint-disable-next-line max-len\n if (batchChanges[literals.changedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[literals.changedRecords]) > -1) {\n isModified = true;\n // eslint-disable-next-line max-len\n dataSource.push(batchChanges[literals.changedRecords][this.getIndexByKey(currentViewData[i], batchChanges[literals.changedRecords])]);\n }\n // eslint-disable-next-line max-len\n if (batchChanges[literals.deletedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[literals.deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[i]);\n }\n }\n if (batchChanges[literals.addedRecords].length) {\n for (var i = 0; i < batchChanges[literals.addedRecords].length; i++) {\n dataSource.push(batchChanges[literals.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 } 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 *\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 = !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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 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, extend, getValue } 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, destroy } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport * as literals from '../base/string-literals';\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 * @returns {void}\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var cFormat = getValue('customFormat', column);\n if (!isNullOrUndefined(cFormat)) {\n column.setPropertiesSilent({ format: 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 };\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 this.parent.on(destroy, this.destroy, 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 this.parent.off(destroy, this.destroy);\n remove(this.parent.element.querySelector('.' + literals.gridFooter));\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\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 * @param {AggregateRowModel[]} aggregates - specifies the AggregateRowModel\n * @param {Function} callback - specifies the Function\n * @returns {void}\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren } from '../base/util';\nimport { destroy } from '../base/constant';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n role: 'gridcell', tabindex: '-1'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function () {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[i] && !this.childRefs[i].isDestroyed) {\n this.childRefs[i].destroy();\n }\n }\n this.parent.off(destroy, this.destroyButtons);\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', 'is Command column column header ' + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd, destroy } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].commands) {\n var commandCols = cols[i].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[j][idInString] === uid && commandCols[j][typeInString] === type) {\n commandColumn = commandCols[j];\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.ariaRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[i].commands) {\n var commandCol = col[i].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[j][uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { EventHandler, detach, Event, addClass } from '@syncfusion/ej2-base';\nexport var classNames = {\n chipSet: 'e-chip-set',\n chip: 'e-chip',\n avatar: 'e-chip-avatar',\n text: 'e-chip-text',\n icon: 'e-chip-icon',\n delete: 'e-chip-delete',\n deleteIcon: 'e-dlt-btn',\n multiSelection: 'e-multi-selection',\n singleSelection: 'e-selection',\n active: 'e-active',\n chipWrapper: 'e-chip-avatar-wrap',\n iconWrapper: 'e-chip-icon-wrap',\n focused: 'e-focused',\n disabled: 'e-disabled',\n rtl: 'e-rtl'\n};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ChipList = /** @class */ (function (_super) {\n __extends(ChipList, _super);\n function ChipList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.multiSelectedChip = [];\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n ChipList.prototype.preRender = function () {\n //prerender\n };\n /**\n * To find the chips length.\n *\n * @returns boolean\n * @private\n */\n ChipList.prototype.chipType = function () {\n return (this.chips && this.chips.length && this.chips.length > 0);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.render = function () {\n var property;\n this.type = this.chips.length ? 'chipset' : (this.text || this.element.innerText ? 'chip' : 'chipset');\n this.setAttributes();\n this.createChip();\n this.setRtl();\n this.select(this.selectedChips, property);\n this.wireEvent(false);\n this.rippleFunction = rippleEffect(this.element, {\n selector: '.e-chip'\n });\n this.renderComplete();\n };\n ChipList.prototype.createChip = function () {\n this.innerText = this.element.innerText.trim();\n this.element.innerHTML = '';\n this.chipCreation(this.type === 'chip' ? [this.innerText ? this.innerText : this.text] : this.chips);\n };\n ChipList.prototype.setAttributes = function () {\n if (this.type === 'chip') {\n this.element.tabIndex = 0;\n this.element.setAttribute('role', 'option');\n }\n else {\n this.element.classList.add(classNames.chipSet);\n this.element.setAttribute('role', 'listbox');\n if (this.selection === 'Multiple') {\n this.element.classList.add(classNames.multiSelection);\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else if (this.selection === 'Single') {\n this.element.classList.add(classNames.singleSelection);\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n };\n ChipList.prototype.setRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](classNames.rtl);\n };\n ChipList.prototype.chipCreation = function (data) {\n var chipListArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var chipArray = this.elementCreation(fieldsData);\n var className = (classNames.chip + ' ' + (fieldsData.enabled ? ' ' : classNames.disabled) + ' ' +\n (fieldsData.avatarIconCss || fieldsData.avatarText ? classNames.chipWrapper : (fieldsData.leadingIconCss ?\n classNames.iconWrapper : ' ')) + ' ' + fieldsData.cssClass).split(' ').filter(function (css) { return css; });\n if (!this.chipType()) {\n chipListArray = chipArray;\n addClass([this.element], className);\n this.element.setAttribute('aria-label', fieldsData.text);\n if (fieldsData.value) {\n this.element.setAttribute('data-value', fieldsData.value.toString());\n }\n }\n else {\n var wrapper = this.createElement('DIV', {\n className: className.join(' '), attrs: {\n tabIndex: '0', role: 'option',\n 'aria-label': fieldsData.text, 'aria-selected': 'false'\n }\n });\n if (fieldsData.value) {\n wrapper.setAttribute('data-value', fieldsData.value.toString());\n }\n append(chipArray, wrapper);\n chipListArray.push(wrapper);\n }\n }\n append(chipListArray, this.element);\n };\n ChipList.prototype.getFieldValues = function (data) {\n var chipEnabled = !(this.enabled.toString() === 'false');\n var fields = {\n text: typeof data === 'object' ? (data.text ? data.text.toString() : this.text.toString()) :\n (!this.chipType() ? (this.innerText ? this.innerText : this.text.toString()) : data.toString()),\n cssClass: typeof data === 'object' ? (data.cssClass ? data.cssClass.toString() : this.cssClass.toString()) :\n (this.cssClass.toString()),\n leadingIconCss: typeof data === 'object' ? (data.leadingIconCss ? data.leadingIconCss.toString() :\n this.leadingIconCss.toString()) : (this.leadingIconCss.toString()),\n avatarIconCss: typeof data === 'object' ? (data.avatarIconCss ? data.avatarIconCss.toString() :\n this.avatarIconCss.toString()) : (this.avatarIconCss.toString()),\n avatarText: typeof data === 'object' ? (data.avatarText ? data.avatarText.toString() : this.avatarText.toString()) :\n (this.avatarText.toString()),\n trailingIconCss: typeof data === 'object' ? (data.trailingIconCss ? data.trailingIconCss.toString() :\n this.trailingIconCss.toString()) : (this.trailingIconCss.toString()),\n enabled: typeof data === 'object' ? (!isNullOrUndefined(data.enabled) ? (data.enabled.toString() === 'false' ? false : true) :\n chipEnabled) : (chipEnabled),\n value: typeof data === 'object' ? ((data.value ? data.value.toString() : null)) : null,\n leadingIconUrl: typeof data === 'object' ? (data.leadingIconUrl ? data.leadingIconUrl.toString() : this.leadingIconUrl) :\n this.leadingIconUrl,\n trailingIconUrl: typeof data === 'object' ? (data.trailingIconUrl ? data.trailingIconUrl.toString() : this.trailingIconUrl) :\n this.trailingIconUrl\n };\n return fields;\n };\n ChipList.prototype.elementCreation = function (fields) {\n var chipArray = [];\n if (fields.avatarText || fields.avatarIconCss) {\n var className = (classNames.avatar + ' ' + fields.avatarIconCss).trim();\n var chipAvatarElement = this.createElement('span', { className: className });\n chipAvatarElement.innerText = fields.avatarText;\n chipArray.push(chipAvatarElement);\n }\n else if (fields.leadingIconCss) {\n var className = (classNames.icon + ' ' + fields.leadingIconCss).trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipArray.push(chipIconElement);\n }\n else if (fields.leadingIconUrl) {\n var className = (classNames.avatar + ' ' + 'image-url').trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipIconElement.style.backgroundImage = 'url(' + fields.leadingIconUrl + ')';\n chipArray.push(chipIconElement);\n }\n var chipTextElement = this.createElement('span', { className: classNames.text });\n chipTextElement.innerText = fields.text;\n chipArray.push(chipTextElement);\n if (fields.trailingIconCss || (this.chipType() && this.enableDelete)) {\n var className = (classNames.delete + ' ' +\n (fields.trailingIconCss ? fields.trailingIconCss : classNames.deleteIcon)).trim();\n var chipdeleteElement = this.createElement('span', { className: className });\n chipArray.push(chipdeleteElement);\n }\n else if (fields.trailingIconUrl) {\n var className = ('trailing-icon-url').trim();\n var chipIconsElement = this.createElement('span', { className: className });\n chipIconsElement.style.backgroundImage = 'url(' + fields.trailingIconUrl + ')';\n chipArray.push(chipIconsElement);\n }\n return chipArray;\n };\n /**\n * A function that finds chip based on given input.\n *\n * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}.\n */\n ChipList.prototype.find = function (fields) {\n var chipData;\n var chipElement = fields instanceof HTMLElement ?\n fields : this.element.querySelectorAll('.' + classNames.chip)[fields];\n if (chipElement && this.chipType()) {\n chipData = { text: undefined, index: undefined, element: undefined, data: undefined };\n chipData.index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipElement);\n chipData.text = typeof this.chips[chipData.index] === 'object' ?\n (this.chips[chipData.index].text ?\n this.chips[chipData.index].text.toString() : '') :\n this.chips[chipData.index].toString();\n chipData.data = this.chips[chipData.index];\n chipData.element = chipElement;\n }\n return chipData;\n };\n /**\n * Allows adding the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {string[] | number[] | ChipModel[] | string | number | ChipModel} chipsData - We can pass array of string or\n * array of number or array of chip model or string data or number data or chip model.\n * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\n\n */\n ChipList.prototype.add = function (chipsData) {\n var _a;\n if (this.type !== 'chip') {\n var fieldData = chipsData instanceof Array ?\n chipsData : [chipsData];\n (_a = this.chips).push.apply(_a, fieldData);\n this.chipCreation(fieldData);\n }\n };\n /**\n * Allows selecting the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\n */\n ChipList.prototype.select = function (fields, selectionType) {\n this.onSelect(fields, false, selectionType);\n };\n ChipList.prototype.multiSelection = function (newProp) {\n var items = this.element.querySelectorAll('.' + 'e-chip');\n for (var j = 0; j < newProp.length; j++) {\n if (typeof newProp[j] === 'string') {\n for (var k = 0; k < items.length; k++) {\n if (newProp[j] !== k) {\n if (newProp[j] === items[k].attributes[5].value) {\n this.multiSelectedChip.push(k);\n break;\n }\n }\n }\n }\n else {\n this.multiSelectedChip.push(newProp[j]);\n }\n }\n };\n ChipList.prototype.onSelect = function (fields, callFromProperty, selectionType) {\n var index;\n var chipNodes;\n var chipValue;\n if (this.chipType() && this.selection !== 'None') {\n if (callFromProperty) {\n var chipElements = this.element.querySelectorAll('.' + classNames.chip);\n for (var i = 0; i < chipElements.length; i++) {\n chipElements[i].setAttribute('aria-selected', 'false');\n chipElements[i].classList.remove(classNames.active);\n }\n }\n var fieldData = fields instanceof Array ? fields : [fields];\n for (var i = 0; i < fieldData.length; i++) {\n var chipElement = fieldData[i] instanceof HTMLElement ? fieldData[i]\n : this.element.querySelectorAll('.' + classNames.chip)[fieldData[i]];\n if (selectionType !== 'index') {\n for (var j = 0; j < this.chips.length; j++) {\n chipNodes = this.element.querySelectorAll('.' + classNames.chip)[j];\n var fieldsData = this.getFieldValues(this.chips[j]);\n if (selectionType === 'value') {\n if (fieldsData.value !== null) {\n chipValue = chipNodes.dataset.value;\n }\n }\n else if (selectionType === 'text') {\n chipValue = chipNodes.innerText;\n }\n if (chipValue === fieldData[i].toString()) {\n index = j;\n chipElement = this.element.querySelectorAll('.' + classNames.chip)[index];\n }\n }\n }\n if (chipElement instanceof HTMLElement) {\n this.selectionHandler(chipElement);\n }\n }\n }\n };\n /**\n * Allows removing the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\n */\n ChipList.prototype.remove = function (fields) {\n var _this = this;\n if (this.chipType()) {\n var fieldData = fields instanceof Array ? fields : [fields];\n var chipElements_1 = [];\n var chipCollection_1 = this.element.querySelectorAll('.' + classNames.chip);\n fieldData.forEach(function (data) {\n var chipElement = data instanceof HTMLElement ? data\n : chipCollection_1[data];\n if (chipElement instanceof HTMLElement) {\n chipElements_1.push(chipElement);\n }\n });\n chipElements_1.forEach(function (element) {\n var chips = _this.element.querySelectorAll('.' + classNames.chip);\n var index = Array.prototype.slice.call(chips).indexOf(element);\n _this.deleteHandler(element, index);\n });\n }\n };\n /**\n * Returns the selected chip(s) data.\n * {% codeBlock src='chips/getSelectedChips/index.md' %}{% endcodeBlock %}\n */\n ChipList.prototype.getSelectedChips = function () {\n var selectedChips;\n if (this.chipType() && this.selection !== 'None') {\n var selectedItems = { texts: [], Indexes: [], data: [], elements: [] };\n var items = this.element.querySelectorAll('.' + classNames.active);\n for (var i = 0; i < items.length; i++) {\n var chip = items[i];\n selectedItems.elements.push(chip);\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chip);\n selectedItems.Indexes.push(index);\n selectedItems.data.push(this.chips[index]);\n var text = typeof this.chips[index] === 'object' ?\n this.chips[index].text ? this.chips[index].text.toString()\n : null : this.chips[index].toString();\n selectedItems.texts.push(text);\n }\n var selectedItem = {\n text: selectedItems.texts[0], index: selectedItems.Indexes[0],\n data: selectedItems.data[0], element: selectedItems.elements[0]\n };\n selectedChips = !isNullOrUndefined(selectedItem.index) ?\n (this.selection === 'Multiple' ? selectedItems : selectedItem) : undefined;\n }\n return selectedChips;\n };\n ChipList.prototype.wireEvent = function (unWireEvent) {\n if (!unWireEvent) {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keyHandler);\n EventHandler.remove(this.element, 'keyup', this.keyHandler);\n }\n };\n ChipList.prototype.keyHandler = function (e) {\n if (e.target.classList.contains(classNames.chip)) {\n if (e.type === 'keydown') {\n if (e.keyCode === 13) {\n this.clickHandler(e);\n }\n else if (e.keyCode === 46 && this.enableDelete) {\n this.clickHandler(e, true);\n }\n }\n else if (e.keyCode === 9) {\n this.focusInHandler(e.target);\n }\n }\n };\n ChipList.prototype.focusInHandler = function (chipWrapper) {\n if (!chipWrapper.classList.contains(classNames.focused)) {\n chipWrapper.classList.add(classNames.focused);\n }\n };\n ChipList.prototype.focusOutHandler = function (e) {\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n var focusedElement = !this.chipType() ? (this.element.classList.contains(classNames.focused) ?\n this.element : null) : this.element.querySelector('.' + classNames.focused);\n if (chipWrapper && focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n }\n };\n ChipList.prototype.clickHandler = function (e, del) {\n var _this = this;\n if (del === void 0) { del = false; }\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n if (chipWrapper) {\n // eslint-disable-next-line\n var chipDataArgs = void 0;\n if (this.chipType()) {\n chipDataArgs = this.find(chipWrapper);\n }\n else {\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipWrapper);\n chipDataArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, index: index\n };\n }\n chipDataArgs.event = e;\n chipDataArgs.cancel = false;\n this.trigger('beforeClick', chipDataArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.clickEventHandler(observedArgs.element, e, del);\n }\n });\n }\n };\n ChipList.prototype.clickEventHandler = function (chipWrapper, e, del) {\n var _this = this;\n if (this.chipType()) {\n var chipData_1 = this.find(chipWrapper);\n chipData_1.event = e;\n var deleteElement = e.target.classList.contains(classNames.deleteIcon) ?\n e.target : (del ? chipWrapper.querySelector('.' + classNames.deleteIcon) : undefined);\n if (deleteElement && this.enableDelete) {\n chipData_1.cancel = false;\n var deletedItemArgs = chipData_1;\n this.trigger('delete', deletedItemArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.deleteHandler(observedArgs.element, observedArgs.index);\n _this.selectionHandler(chipWrapper);\n chipData_1.selected = observedArgs.element.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n _this.trigger('click', selectedItemArgs);\n }\n });\n }\n else if (this.selection !== 'None') {\n this.selectionHandler(chipWrapper);\n chipData_1.selected = chipWrapper.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n this.trigger('click', selectedItemArgs);\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = chipData_1;\n this.trigger('click', clickedItemArgs);\n }\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, event: e\n };\n this.trigger('click', clickedItemArgs);\n }\n };\n ChipList.prototype.selectionHandler = function (chipWrapper) {\n if (this.selection === 'Single') {\n var activeElement = this.element.querySelector('.' + classNames.active);\n if (activeElement && activeElement !== chipWrapper) {\n activeElement.classList.remove(classNames.active);\n activeElement.setAttribute('aria-selected', 'false');\n }\n this.setProperties({ selectedChips: null }, true);\n }\n else {\n this.setProperties({ selectedChips: [] }, true);\n }\n if (chipWrapper.classList.contains(classNames.active)) {\n chipWrapper.classList.remove(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'false');\n }\n else {\n chipWrapper.classList.add(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'true');\n }\n this.updateSelectedChips();\n };\n ChipList.prototype.updateSelectedChips = function () {\n var chipListEle = this.element.querySelectorAll('.e-chip');\n var chipCollIndex = [];\n var chipCollValue = [];\n var chip = null;\n var value;\n for (var i = 0; i < chipListEle.length; i++) {\n var selectedEle = this.element.querySelectorAll('.e-chip')[i];\n if (selectedEle.getAttribute('aria-selected') === 'true') {\n value = selectedEle.getAttribute('data-value');\n if (this.selection === 'Single' && selectedEle.classList.contains('e-active')) {\n chip = value ? value : i;\n break;\n }\n else {\n chip = value ? chipCollValue.push(value) : chipCollIndex.push(i);\n }\n }\n }\n this.setProperties({ selectedChips: this.selection === 'Single' ? chip : value ? chipCollValue : chipCollIndex }, true);\n };\n ChipList.prototype.deleteHandler = function (chipWrapper, index) {\n this.chips.splice(index, 1);\n this.setProperties({ chips: this.chips }, true);\n detach(chipWrapper);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n * {% codeBlock src='chips/destroy/index.md' %}{% endcodeBlock %}\n */\n ChipList.prototype.destroy = function () {\n removeClass([this.element], [classNames.chipSet, classNames.chip, classNames.rtl,\n classNames.multiSelection, classNames.singleSelection, classNames.disabled, classNames.chipWrapper, classNames.iconWrapper,\n classNames.active, classNames.focused].concat(this.cssClass.toString().split(' ').filter(function (css) { return css; })));\n this.removeMultipleAttributes(['tabindex', 'role', 'aria-label', 'aria-multiselectable'], this.element);\n this.wireEvent(true);\n this.rippleFunction();\n _super.prototype.destroy.call(this);\n this.element.innerHTML = '';\n this.element.innerText = this.innerText;\n };\n ChipList.prototype.removeMultipleAttributes = function (attributes, element) {\n attributes.forEach(function (attr) {\n element.removeAttribute(attr);\n });\n };\n ChipList.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ChipList.prototype.getModuleName = function () {\n return 'chip-list';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var property;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'chips':\n case 'text':\n case 'avatarText':\n case 'avatarIconCss':\n case 'leadingIconCss':\n case 'trailingIconCss':\n case 'selection':\n case 'enableDelete':\n case 'enabled':\n this.refresh();\n break;\n case 'cssClass':\n if (!this.chipType()) {\n removeClass([this.element], oldProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n addClass([this.element], newProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n }\n else {\n this.refresh();\n }\n break;\n case 'selectedChips':\n removeClass(this.element.querySelectorAll('.e-active'), 'e-active');\n if (this.selection === 'Multiple') {\n this.multiSelectedChip = [];\n this.multiSelection(newProp.selectedChips);\n this.onSelect(this.multiSelectedChip, true, property);\n this.updateSelectedChips();\n }\n else {\n this.onSelect(newProp.selectedChips, true, property);\n }\n break;\n case 'enableRtl':\n this.setRtl();\n break;\n }\n }\n };\n __decorate([\n Property([])\n ], ChipList.prototype, \"chips\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"avatarText\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"avatarIconCss\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"leadingIconCss\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"trailingIconCss\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"leadingIconUrl\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"trailingIconUrl\", void 0);\n __decorate([\n Property('')\n ], ChipList.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], ChipList.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], ChipList.prototype, \"selectedChips\", void 0);\n __decorate([\n Property('None')\n ], ChipList.prototype, \"selection\", void 0);\n __decorate([\n Property(false)\n ], ChipList.prototype, \"enableDelete\", void 0);\n __decorate([\n Event()\n ], ChipList.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], ChipList.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], ChipList.prototype, \"beforeClick\", void 0);\n __decorate([\n Event()\n ], ChipList.prototype, \"delete\", void 0);\n ChipList = __decorate([\n NotifyPropertyChanges\n ], ChipList);\n return ChipList;\n}(Component));\nexport { ChipList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { ChipList } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React ChipList Component.\n * ```ts\n * \n * ```\n */\nvar ChipListComponent = /** @class */ (function (_super) {\n __extends(ChipListComponent, _super);\n function ChipListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'chips': 'chip' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ChipListComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ChipListComponent;\n}(ChipList));\nexport { ChipListComponent };\napplyMixins(ChipListComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, formatUnit, EventHandler, Event, isNullOrUndefined, closest, Browser } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar CONTEXTBACKDROP = 'e-backdrop';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Sidebar = /** @class */ (function (_super) {\n __extends(Sidebar, _super);\n /* eslint-enable */\n function Sidebar(options, element) {\n return _super.call(this, options, element) || this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNOU(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === \"EJS-SIDEBAR\") {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n this.element.setAttribute('tabindex', this.tabIndex);\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], CLOSE);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e)) {\n this.triggerChange();\n }\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling) {\n removeClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /* eslint-disable */\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyle(_this.element, { 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /* eslint-disable */\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], VISIBILITY);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n addClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function () {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto') {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && this.element.classList.contains(CLOSE)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\nexport { Sidebar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Sidebar } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `SidebarComponent` represents the Essential JS 2 React Sidebar Component.\n * ```ts\n * \n * ```\n */\nvar SidebarComponent = /** @class */ (function (_super) {\n __extends(SidebarComponent, _super);\n function SidebarComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n SidebarComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SidebarComponent;\n}(Sidebar));\nexport { SidebarComponent };\napplyMixins(SidebarComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, KeyboardEvents, rippleEffect } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, addClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll, SanitizeHtmlHelper, isRippleEnabled } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
    \n * \n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-multiselectable', 'role', 'data-ripple'].forEach(function (attrb) {\n _this.element.removeAttribute(attrb);\n });\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (!isNOU(nested)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n if (!this.isServerRendered) {\n this.initializeheaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n }\n else {\n this.wireFocusEvents();\n }\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n var ariaAttr = {\n 'aria-disabled': 'false', 'role': 'presentation', 'aria-multiselectable': 'true'\n };\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n attributes(this.element, ariaAttr);\n if (this.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeheaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n /* eslint-disable */\n Accordion.prototype.getheaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /* eslint-disable */\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n /* eslint-disable */\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n /* eslint-enable */\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n if (!this.isServerRendered) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n var id = acrdnItem.id;\n if (this.items.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n _this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n _this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n }\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var items = this.getItems();\n var ariaAttr = {\n 'tabindex': '0', 'role': 'heading', 'aria-selected': 'false', 'aria-label': 'collapsed',\n 'aria-disabled': 'false', 'aria-level': items.length.toString()\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.id = getUniqueID('acrdn_item');\n if (isNOU(item.id)) {\n item.id = innerEle.id;\n }\n attributes(innerEle, { 'aria-expanded': 'false', 'role': 'row' });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getheaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n item.header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.fetchElement = function (ele, value, index, isHeader) {\n /* eslint-disable */\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n /* eslint-disable */\n }\n else if (!isNOU(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n /* eslint-enable */\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'definition');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (this.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[index], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n if (this.enableHtmlSanitizer && typeof (this.items[index].content)) {\n this.items[index].content = SanitizeHtmlHelper.sanitize(this.items[index].content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, this.items[index].content, index, false));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgtItemEle, { 'aria-expanded': 'true' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'true', 'aria-label': 'expanded' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgtItemEle, { 'aria-expanded': 'false' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'false', 'aria-label': 'collapsed' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.itemAttribUpdate = function () {\n var items = this.getItems();\n var itemEle = this.getItemElements();\n var itemLen = items.length;\n itemEle.forEach(function (ele) {\n select('.' + CLS_HEADER, ele).setAttribute('aria-level', '' + itemLen);\n });\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[itemIndex]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.itemAttribUpdate();\n _this.expandedIndices = [];\n _this.expandedItemRefresh(ele);\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.expandedItemRefresh = function (ele) {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'itemTemplate'], index);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.itemAttribUpdate();\n this.expandedIndices = [];\n this.expandedItemRefresh(this.element);\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[index];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Refresh the Accordion component.\n *\n * @returns {void}.\n */\n Accordion.prototype.refresh = function () {\n if (!this.isServerRendered) {\n _super.prototype.refresh.call(this);\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[index];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var _this = this;\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n if (!this.isServerRendered) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else {\n var id = ele.id;\n if (this.items.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n _this.expand(ctn);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(function () {\n if (_this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n _this.expand(ctn);\n });\n }\n }\n }\n else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[index];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[index];\n items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n toElement.innerHTML = '';\n this.templateCompile(toElement, template, index);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Accordion.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.fetchElement(tempEle, cnt, index, false);\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\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 (this.isServerRendered) {\n this.wireFocusEvents();\n break;\n }\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[j], 10);\n var property = Object.keys(newProp.items[index])[0];\n var item = selectAll('.' + CLS_ITEM, this.element)[index];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNOU(item)) {\n item.classList.remove(oldVal);\n item.classList.add(newVal);\n }\n if (property === 'visible' && !isNOU(item)) {\n if (Object(newProp.items[index])[property] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property === 'disabled' && !isNOU(item)) {\n this.enableItem(index, !newVal);\n }\n if (property === 'content' && !isNOU(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeheaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL);\n }\n else {\n this.remove(acrdn, CLS_RTL);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n if (this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n break;\n }\n }\n if (isRefresh && !this.isServerRendered) {\n this.initExpand = [];\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Property(false)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Accordion } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Accordion Component.\n * ```html\n * = 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, Internationalization, NotifyPropertyChanges, detach, getUniqueID } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Event, Browser, L10n, ChildProperty } from '@syncfusion/ej2-base';\nimport { addClass, createElement, remove, closest, select, prepend, removeClass, attributes, Collection } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, formatUnit, setValue, rippleEffect, merge, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { CalendarBase } from '../calendar/calendar';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT = 'e-daterangepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED = 'e-disabled';\nvar SELECTED = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON = 'e-next';\nvar PREVICON = 'e-prev';\nvar HEADER = 'e-header';\nvar TITLE = 'e-title';\nvar ICONCONTAINER = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE = 'e-device';\nvar OVERLAY = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW = 'e-range-overflow';\nvar OFFSETVALUE = 4;\nvar PRIMARY = 'e-primary';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar ZOOMIN = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @class */ (function (_super) {\n __extends(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\nexport { Presets };\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @class */ (function (_super) {\n __extends(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateRangePickerModel} options - Specifies the DateRangePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n DateRangePicker.prototype.updateValue = function () {\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes[this.element.attributes[i].name] = this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes[pro]);\n this.secondHiddenChild.setAttribute(pro, attributes[pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n element.removeAttribute(attributes[i]);\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if ((+new Date(startDate.setHours(0, 0, 0, 0)) === +new Date(this.startValue.setHours(0, 0, 0, 0))) &&\n (+new Date(endDate.setHours(0, 0, 0, 0)) === +new Date(this.endValue.setHours(0, 0, 0, 0)))) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON);\n this.nextIcon = calendar.querySelector('.' + NEXTICON);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE);\n this.startButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (!this.preventFocus) {\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.openOnFocus && !this.preventFocus) {\n this.preventFocus = true;\n this.show();\n }\n else {\n this.preventFocus = true;\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n var startDate = this.globalize.parseDate(range[0].trim(), dateOptions);\n var endDate = this.globalize.parseDate(range[1].trim(), dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele) {\n this.removeFocusedDate();\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.keyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.keyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n }\n };\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n // eslint-disable-next-line no-self-assign\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n }\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n }\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n e.preventDefault();\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = cell.classList.contains(DISABLED) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY) || (ele.classList.contains(TODAY) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER) && !ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE);\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n this.disabledDateRender();\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED);\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n if (!ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: isBlazor() ? 'D' : 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [STARTDATE, ENDDATE, SELECTED]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar) {\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n attributes(this.calendarElement, { 'role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '-1');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER + ' .' + TITLE);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n this.updateControl(this.rightCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT + ' ' + CSS });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT, PRIMARY, CSS]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.preventFocus = true;\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE) || (this.isMobile && li.classList.contains(ACTIVE)))) {\n if (this.isMobile && li.classList.contains(ACTIVE)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n addClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE, ROOT, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n }\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day')))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // eslint-disable-next-line\n extISOStr = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n this.hide(null);\n var ariaAttrs = {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Return the properties that are maintained upon browser refresh.\n *\n * @returns {string}\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n *\n * @returns {Object}\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n this.disabledDateRender();\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * To open the Popup container in the DateRangePicker component.\n *\n * @param {HTMLElement} element - Specifies element.\n * @returns {void}\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE);\n _this.startButton.element.classList.remove(ACTIVE);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.isMobile || Browser.isDevice);\n }\n });\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateRangePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateRangePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['maxDays', 'minDays', 'value'];\n if (openPopup.indexOf(prop) < 0) {\n this.hide(null);\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.inputElement.setAttribute('aria-readonly', '' + this.readonly);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.checkDateValue(new Date(this.checkValue(newProp.startDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(newProp.endDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\nexport { DateRangePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { DateRangePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DateRangePicker Component.\n * ```ts\n * \n * ```\n */\nvar DateRangePickerComponent = /** @class */ (function (_super) {\n __extends(DateRangePickerComponent, _super);\n function DateRangePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'presets': 'preset' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DateRangePickerComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DateRangePickerComponent;\n}(DateRangePicker));\nexport { DateRangePickerComponent };\napplyMixins(DateRangePickerComponent, [ComponentBase, React.Component]);\n","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n var i18nOptions = _objectSpread({}, getDefaults(), {}, i18n.options.react, {}, props);\n\n var useSuspense = i18nOptions.useSuspense;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return {\n t: i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0])\n };\n }\n\n var _useState = useState(getT()),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT());\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT());\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [namespaces.join()]);\n var ret = [t.t, i18n, ready];\n ret.t = t.t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT());\n resolve();\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 { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n // eslint-disable-next-line\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = document.querySelector('#' + this.element.id + '_tree');\n if (isTree) {\n var popupDiv = document.querySelector('#' + this.element.id + '_popup');\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.setAttributes();\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n this.popupDiv.style.display = 'none';\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (value === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n }\n });\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n if (matchedChildren.length !== 0) {\n node[this.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.fields.child] = null;\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (!this.wrapText && e.target.classList.contains(CHIP_CLOSE)) {\n this.removeChip(e);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText) {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n _this.treeObj.element.focus();\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n var disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n // eslint-disable-next-line\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n // eslint-disable-next-line\n var compiledString = compile(remainContent);\n // eslint-disable-next-line\n var totalCompiledString = compile(this.l10n.getConstant('totalCountTemplate'));\n remainElement.appendChild(compiledString({ 'count': this.value.length }, this, 'overflowCountTemplate', null, !this.isStringTemplate)[0]);\n this.overFlowWrapper.appendChild(remainElement);\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.innerHTML = data;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, compiledString, totalCompiledString));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, \n // eslint-disable-next-line\n compiledString, \n // eslint-disable-next-line\n totalCompiledString) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.appendChild((this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n compiledString({ 'count': remaining }, this, 'overflowCountTemplate', null, !this.isStringTemplate)[0] :\n totalCompiledString({ 'count': remaining }, this, 'totalCountTemplate', null, !this.isStringTemplate)[0]);\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n // eslint-disable-next-line\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.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 this.inputWrapper.classList.add(this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNOU(this.htmlAttributes[htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.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 (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 if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\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.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 DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n // eslint-disable-next-line\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value.slice();\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.appendTo('#' + this.tree.id);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\n prepend([_this.popupDiv], _this.popupEle);\n _this.popupDiv.style.display = 'block';\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\n }\n }\n if (!isCancelled) {\n attributes(_this.inputWrapper, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n _this.popupEle.style.display = 'block';\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n _this.treeObj.element.focus();\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && (this.inputWrapper.contains(target) || isTree || isFilter || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!this.inputWrapper.contains(target) && this.inputFocus) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, ds[i])) || !isNOU(getValue(field.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n // eslint-disable-next-line\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck') {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (this.value && this.value.length === 0) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: newValues }, true);\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n // eslint-disable-next-line\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '';\n }\n if (this.selectedText.length > 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n chipContent.innerHTML = text;\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n // eslint-disable-next-line\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n this.updateModelMode();\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.updateValue(this.value);\n this.treeObj.dataBind();\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ value: [] }, true);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n _super.prototype.destroy.call(this);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n // eslint-disable-next-line\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n this.popupEle.style.display = 'none';\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The DropDownTree component contains a list of predefined values from which you can choose a single or multiple values.\n * ```\n * \n * ```\n */\nvar DropDownTreeComponent = /** @class */ (function (_super) {\n __extends(DropDownTreeComponent, _super);\n function DropDownTreeComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownTreeComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownTreeComponent;\n}(DropDownTree));\nexport { DropDownTreeComponent };\napplyMixins(DropDownTreeComponent, [ComponentBase, React.Component]);\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { appendChildElement, redrawElement, pathAnimation, valueToCoefficient, getVisiblePoints } from '../../common/utils/helper';\nimport { getAnimationFunction, getPoint, getMinPointsDelta } from '../../common/utils/helper';\nimport { PathOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { pointRender } from '../../common/model/constants';\n/**\n * Column Series Base\n */\nvar ColumnBase = /** @class */ (function () {\n function ColumnBase() {\n }\n /**\n * To get the position of the column series.\n *\n * @returns {DoubleRange} doubleRange\n * @private\n */\n ColumnBase.prototype.getSideBySideInfo = function (series) {\n if (series.chart.enableSideBySidePlacement && !series.position) {\n this.getSideBySidePositions(series);\n }\n var position = !series.chart.enableSideBySidePlacement ? 0 : series.position;\n var rectCount = !series.chart.enableSideBySidePlacement ? 1 : series.rectCount;\n series.isRectSeries = true;\n var visibleSeries = series.chart.visibleSeries;\n var seriesSpacing = series.chart.enableSideBySidePlacement ? series.columnSpacing : 0; // Column Spacing\n var pointSpacing = (series.columnWidth === null || isNaN(+series.columnWidth)) ? ((series.type === 'Histogram') ? 1 : 0.7) :\n series.columnWidth; // Column width\n var minimumPointDelta = getMinPointsDelta(series.xAxis, visibleSeries);\n var width = minimumPointDelta * pointSpacing;\n var radius;\n var location = (position) / rectCount - 0.5;\n var doubleRange = new DoubleRange(location, location + (1 / rectCount));\n if (!(isNaN(doubleRange.start) || isNaN(doubleRange.end))) {\n doubleRange = new DoubleRange(doubleRange.start * width, doubleRange.end * width);\n radius = seriesSpacing * doubleRange.delta;\n doubleRange = new DoubleRange(doubleRange.start + radius / 2, doubleRange.end - radius / 2);\n }\n return doubleRange;\n };\n /**\n * To get the rect values.\n *\n * @returns {Rect} rect region values\n * @private\n */\n ColumnBase.prototype.getRectangle = function (x1, y1, x2, y2, series) {\n var point1 = getPoint(x1, y1, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n var point2 = getPoint(x2, y2, series.xAxis, series.yAxis, series.chart.requireInvertedAxis);\n return new Rect(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.abs(point2.x - point1.x), Math.abs(point2.y - point1.y));\n };\n /**\n * To get the position of each series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.getSideBySidePositions = function (series) {\n var chart = series.chart;\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.findRectPosition(series.findSeriesCollection(columnItem, item, false));\n }\n }\n };\n ColumnBase.prototype.findRectPosition = function (seriesCollection) {\n var stackingGroup = [];\n var vSeries = { rectCount: 0, position: null };\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n if (value.type.indexOf('Stacking') !== -1) {\n if (value.stackingGroup) {\n if (stackingGroup[value.stackingGroup] === undefined) {\n value.position = vSeries.rectCount;\n stackingGroup[value.stackingGroup] = vSeries.rectCount++;\n }\n else {\n value.position = stackingGroup[value.stackingGroup];\n }\n }\n else {\n if (vSeries.position === null) {\n value.position = vSeries.rectCount;\n vSeries.position = vSeries.rectCount++;\n }\n else {\n value.position = vSeries.position;\n }\n }\n }\n else {\n value.position = vSeries.rectCount++;\n }\n }\n for (var i = 0; i < seriesCollection.length; i++) {\n var value = seriesCollection[i];\n value.rectCount = vSeries.rectCount;\n }\n };\n /**\n * Updates the symbollocation for points\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateSymbolLocation = function (point, rect, series) {\n if (!series.chart.requireInvertedAxis) {\n this.updateXRegion(point, rect, series);\n }\n else {\n this.updateYRegion(point, rect, series);\n }\n if (series.type === 'Histogram') {\n point.minimum = +point.x - series.histogramValues.binWidth / 2;\n point.maximum = +point.x + series.histogramValues.binWidth / 2;\n }\n };\n /**\n * Update the region for the point.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateXRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isInversed)) ? rect.y : (rect.y + rect.height)\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x + (rect.width) / 2,\n y: rect.y + rect.height\n });\n }\n };\n /**\n * Update the region for the point in bar series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.updateYRegion = function (point, rect, series) {\n point.symbolLocations.push({\n x: (series.seriesType === 'BoxPlot' || series.seriesType.indexOf('HighLow') !== -1 ||\n (point.yValue >= 0 === !series.yAxis.isInversed)) ? rect.x + rect.width : rect.x,\n y: rect.y + rect.height / 2\n });\n this.getRegion(point, rect, series);\n if (series.type === 'RangeColumn') {\n point.symbolLocations.push({\n x: rect.x,\n y: rect.y + rect.height / 2\n });\n }\n };\n /**\n * To render the marker for the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * To get the marker region when Y value is 0\n *\n * @param {Points} point point\n * @param {rect} rect rect\n * @param {Series} series series\n */\n ColumnBase.prototype.getRegion = function (point, rect, series) {\n if (point.y === 0) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n }\n else {\n point.regions.push(rect);\n }\n };\n /**\n * To trigger the point rendering event.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.triggerEvent = function (series, point, fill, border) {\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: series.setPointColor(point, fill),\n border: series.setBorderColor(point, border)\n };\n series.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n return argsData;\n };\n /**\n * To draw the rectangle for points.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.drawRectangle = function (series, point, rect, argsData) {\n var chart = series.chart;\n var check = chart.requireInvertedAxis ? rect.height : rect.width;\n if (check <= 0) {\n return null;\n }\n var direction;\n if (point.y === 0) {\n // For 0 values corner radius will not calculate\n direction = this.calculateRoundedRectPath(rect, 0, 0, 0, 0);\n }\n else {\n direction = this.calculateRoundedRectPath(rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft, series.cornerRadius.bottomRight);\n }\n var name = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +\n '_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;\n var previousElement = redrawElement(chart.redraw, name);\n var previousDirection = previousElement ? previousElement.getAttribute('d') : '';\n var options = new PathOption(name, argsData.fill, argsData.border.width, argsData.border.color, series.opacity, series.dashArray, direction);\n var element = chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n switch (series.seriesType) {\n case 'XY':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.yValue.toString());\n break;\n case 'HighLow':\n element.setAttribute('aria-label', point.x.toString() + ':' + point.high.toString() + ':' + point.low.toString());\n break;\n }\n appendChildElement(series.chart.enableCanvas, series.seriesElement, element, chart.redraw);\n if (!series.chart.enableCanvas) {\n pathAnimation(element, direction, chart.redraw, previousDirection, chart.duration);\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animate = function (series) {\n var rectElements = series.seriesElement.childNodes;\n var count = series.category === 'Indicator' ? 0 : 1;\n var visiblePoints = getVisiblePoints(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n if (!point.symbolLocations.length && !(series.type === 'BoxAndWhisker' && point.regions.length)) {\n continue;\n }\n this.animateRect(rectElements[count], series, point);\n count++;\n }\n };\n /**\n * To animate the series.\n *\n * @returns {void}\n * @private\n */\n ColumnBase.prototype.animateRect = function (element, series, point) {\n var option = series.animation;\n var duration = series.chart.animated ? series.chart.duration : option.duration;\n var effect = getAnimationFunction('Linear');\n var isPlot = point.yValue < 0;\n var x;\n var y;\n var elementHeight = +point.regions[0].height;\n var elementWidth = +point.regions[0].width;\n var centerX;\n var centerY;\n if (!series.chart.requireInvertedAxis) {\n x = +point.regions[0].x;\n if (series.type.indexOf('Stacking') > -1) {\n y = (1 - valueToCoefficient(0, series.yAxis)) * (series.yAxis.rect.height);\n centerX = x;\n centerY = y;\n }\n else {\n y = +point.regions[0].y;\n centerY = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? y + elementHeight / 2 :\n (isPlot !== series.yAxis.isInversed) ? y : y + elementHeight;\n centerX = isPlot ? x : x + elementWidth;\n }\n }\n else {\n y = +point.regions[0].y;\n if (series.type.indexOf('Stacking') > -1) {\n x = (valueToCoefficient(0, series.yAxis)) * series.yAxis.rect.width;\n centerX = x;\n centerY = y;\n }\n else {\n x = +point.regions[0].x;\n centerY = isPlot ? y : y + elementHeight;\n centerX = (series.seriesType.indexOf('HighLow') !== -1 || series.type.indexOf('Waterfall') !== -1) ? x + elementWidth / 2 :\n (isPlot !== series.yAxis.isInversed) ? x + elementWidth : x;\n }\n }\n var value;\n if (!isNullOrUndefined(element)) {\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: option.delay,\n progress: function (args) {\n if (args.timeStamp >= args.delay) {\n element.style.visibility = 'visible';\n if (!series.chart.requireInvertedAxis) {\n elementHeight = elementHeight ? elementHeight : 1;\n value = effect(args.timeStamp - args.delay, 0, elementHeight, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n else {\n elementWidth = elementWidth ? elementWidth : 1;\n value = effect(args.timeStamp - args.delay, 0, elementWidth, args.duration);\n element.setAttribute('transform', 'translate(' + centerX + ' ' + centerY +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n }\n },\n end: function () {\n element.setAttribute('transform', 'translate(0,0)');\n var seriesElement = series.seriesElement;\n if (element === seriesElement.lastElementChild || point.index === series.points.length - 1 ||\n (series.type === 'Waterfall' && element === seriesElement.children[seriesElement.childElementCount - 2])) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n if (series.type === 'Waterfall') {\n var rectElements = seriesElement.childNodes;\n for (var i = 0; i < rectElements.length; i++) {\n if (rectElements[i].id.indexOf('Connector') !== -1) {\n rectElements[i].style.visibility = 'visible';\n rectElements[i].setAttribute('transform', 'translate(0,0)');\n }\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get rounded rect path direction\n */\n ColumnBase.prototype.calculateRoundedRectPath = function (rect, topLeft, topRight, bottomLeft, bottomRight) {\n return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +\n ' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +\n rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +\n ' Q ' + (rect.x + rect.width) + ' ' + rect.y + ' ' +\n (rect.x + rect.width) + ' ' + (rect.y + topRight) + ' ' + 'L ' +\n (rect.x + rect.width) + ' ' + (rect.y + rect.height - bottomRight)\n + ' Q ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' ' + (rect.x + rect.width - bottomRight) + ' ' +\n (rect.y + rect.height) + ' ' + 'L ' + (rect.x + bottomLeft) + ' ' + (rect.y + rect.height) + ' Q ' + rect.x + ' ' +\n (rect.y + rect.height) + ' ' + rect.x + ' ' + (rect.y + rect.height - bottomLeft) + ' ' + 'L' + ' ' + rect.x + ' ' +\n (topLeft + rect.y) + ' ' + 'Z';\n };\n return ColumnBase;\n}());\nexport { ColumnBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\nimport { withInRange } from '../../common/utils/helper';\nimport { ColumnBase } from './column-base';\n/**\n * `ColumnSeries` Module used to render the column series.\n */\nvar ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Render Column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.render = function (series) {\n var rect;\n var sideBySideInfo = this.getSideBySideInfo(series);\n var origin = Math.max(series.yAxis.visibleRange.min, 0);\n var argsData;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var pointColumn = _a[_i];\n pointColumn.symbolLocations = [];\n pointColumn.regions = [];\n if (pointColumn.visible && withInRange(series.points[pointColumn.index - 1], pointColumn, series.points[pointColumn.index + 1], series)) {\n rect = this.getRectangle(pointColumn.xValue + sideBySideInfo.start, pointColumn.yValue, pointColumn.xValue + sideBySideInfo.end, origin, series);\n var color = series.category === 'Indicator' ? pointColumn.color : series.interior;\n argsData = this.triggerEvent(series, pointColumn, color, { width: series.border.width, color: series.border.color });\n if (!argsData.cancel) {\n this.updateSymbolLocation(pointColumn, rect, series);\n this.drawRectangle(series, pointColumn, rect, argsData);\n }\n }\n }\n this.renderMarker(series);\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n */\n ColumnSeries.prototype.doAnimation = function (series) {\n this.animate(series);\n };\n /**\n * Get module name.\n */\n ColumnSeries.prototype.getModuleName = function () {\n return 'ColumnSeries';\n /**\n * return the module name\n */\n };\n /**\n * To destroy the column series.\n *\n * @returns {void}\n * @private\n */\n ColumnSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return ColumnSeries;\n}(ColumnBase));\nexport { ColumnSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nimport { extend } from '@syncfusion/ej2-base';\nimport { ChartLocation, withInBounds } from '../../common/utils/helper';\nimport { Rect, Size, measureText } from '@syncfusion/ej2-svg-base';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart) {\n if (data.series.enableTooltip) {\n if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n if (!series.marker.visible && item.series.type !== 'Scatter' && item.series.type !== 'Bubble') {\n this.previousPoints.shift();\n len -= 1;\n }\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n element.setAttribute('opacity', (highlight ? series.opacity / 2 : series.opacity).toString());\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, extraPoints, templatePoint, customTemplate) {\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.accumulationTooltipModule;\n if (!module) { // For the tooltip enable is false.\n return;\n }\n var isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n var inverted = this.chart.requireInvertedAxis && series.isRectSeries;\n var position = null;\n if (this.text.length <= 1) {\n var contentSize = void 0;\n var headerSize = void 0;\n var tooltipTemplate = !customTemplate ? chart.tooltip.template : customTemplate;\n if (tooltipTemplate && chart.getModuleName() === 'chart' && tooltipTemplate[0] !== '#' && typeof tooltipTemplate === 'string') {\n var templateDiv = document.createElement('div');\n templateDiv.id = 'testing_template';\n templateDiv.className = 'ejSVGTooltip';\n templateDiv.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(templateDiv);\n var template = tooltipTemplate.replaceAll('${x}', point.x).replaceAll('${y}', point.y);\n templateDiv.innerHTML = template;\n contentSize = new Size(templateDiv.firstElementChild.offsetWidth, templateDiv.firstElementChild.offsetHeight);\n headerSize = new Size(0, 0);\n templateDiv.remove();\n }\n else {\n contentSize = measureText(this.text[0], chart.tooltip.textStyle);\n headerSize = (!(this.header === '' || this.header === '')) ? measureText(this.header, this.textStyle) :\n new Size(0, 0);\n }\n // marker size + arrowpadding + 2 * padding + markerpadding\n var markerSize = 10 + 12 + (2 * 10) + 5;\n contentSize.width = Math.max(contentSize.width, headerSize.width) + ((shapes.length > 0) ? markerSize : 0);\n var heightPadding = 12 + (2 * 10) + (headerSize.height > 0 ? (2 * 10) : 0);\n contentSize.height = contentSize.height + headerSize.height + heightPadding;\n position = this.getCurrentPosition(isNegative, inverted);\n position = this.getPositionBySize(contentSize, new Rect(0, 0, bounds.width, bounds.height), location, position);\n isNegative = (position === 'Left') || (position === 'Bottom');\n inverted = (position === 'Left') || (position === 'Right');\n }\n // else if (tooltipPosition !== 'None' && this.text.length <= 1) {\n // position = tooltipPosition as TooltipPlacement;\n // isNegative = (position === 'Left') || (position === 'Bottom');\n // inverted = (position === 'Left') || (position === 'Right');\n // }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity,\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: chart.tooltip.shared,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || chart.tooltip.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: isNegative,\n inverted: inverted,\n arrowPadding: this.text.length > 1 || this.chart.stockChart ? 0 : 12,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n tooltipPlacement: position,\n tooltipRender: function () {\n module.removeHighlight();\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints);\n }\n }\n }, '#' + this.element.id + '_tooltip');\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = chart.tooltip.template;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = isNegative;\n this.svgTooltip.inverted = inverted;\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart ? 0 : 12;\n this.svgTooltip.tooltipPlacement = position;\n this.svgTooltip.dataBind();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.getPositionBySize = function (textSize, bounds, arrowLocation, position) {\n var isTop = this.isTooltipFitPosition('Top', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isBottom = this.isTooltipFitPosition('Bottom', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isRight = this.isTooltipFitPosition('Right', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isLeft = this.isTooltipFitPosition('Left', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var tooltipPos;\n if (isTop || isBottom || isRight || isLeft) {\n if (position === 'Top') {\n tooltipPos = isTop ? 'Top' : (isBottom ? 'Bottom' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Bottom') {\n tooltipPos = isBottom ? 'Bottom' : (isTop ? 'Top' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Right') {\n tooltipPos = isRight ? 'Right' : (isLeft ? 'Left' : (isTop ? 'Top' : 'Bottom'));\n }\n else {\n tooltipPos = isLeft ? 'Left' : (isRight ? 'Right' : (isTop ? 'Top' : 'Bottom'));\n }\n }\n else {\n var size = [(arrowLocation.x - bounds.x), ((bounds.x + bounds.width) - arrowLocation.x),\n (arrowLocation.y - bounds.y), ((bounds.y + bounds.height) - arrowLocation.y)];\n var index = size.indexOf(Math.max.apply(this, size));\n position = (index === 0) ? 'Left' : (index === 1) ? 'Right' : (index === 2) ? 'Top' : 'Bottom';\n return position;\n }\n return tooltipPos;\n };\n BaseTooltip.prototype.isTooltipFitPosition = function (position, bounds, location, size) {\n var start = new ChartLocation(0, 0);\n var end = new ChartLocation(0, 0);\n switch (position) {\n case 'Top':\n start.x = location.x - (size.width / 2);\n start.y = location.y - size.height;\n end.x = location.x + (size.width / 2);\n end.y = location.y;\n break;\n case 'Bottom':\n start.x = location.x - (size.width / 2);\n start.y = location.y;\n end.x = location.x + (size.width / 2);\n end.y = location.y + size.height;\n break;\n case 'Right':\n start.x = location.x;\n start.y = location.y - (size.height / 2);\n end.x = location.x + size.width;\n end.y = location.y + (size.height / 2);\n break;\n case 'Left':\n start.x = location.x - size.width;\n start.y = location.y - (size.height / 2);\n end.x = location.x;\n end.y = location.y + (size.height / 2);\n break;\n }\n return (withInBounds(start.x, start.y, bounds) && withInBounds(end.x, end.y, bounds));\n };\n BaseTooltip.prototype.getCurrentPosition = function (isNegative, inverted) {\n var position;\n if (inverted) {\n position = isNegative ? 'Left' : 'Right';\n }\n else {\n position = isNegative ? 'Bottom' : 'Top';\n }\n return position;\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n }\n this.chart.markerRender.removeHighlightedMarker();\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerHTML !== '
    ';\n this.stopAnimation();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.chart.isReact && isTemplateRendered) {\n this.chart.clearTemplate([tooltipTemplate.id], [0]);\n }\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Tooltip` module is used to render the tooltip for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n if (chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (chart.startMove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (!this.findData(data, this.previousPoints[0]) && chart.tooltip.fadeOutMode === 'Click') {\n this.removeTooltip(0);\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n */\n Tooltip.prototype.tooltip = function () {\n if ((this.chart.stockChart && this.chart.stockChart.onPanning)) {\n this.removeTooltip(1000);\n return null;\n }\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape);\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var template;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: template,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.createTooltip(_this.chart, isFirst, _this.getSymbolLocation(point), point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), _this.chart.chartAxisLayoutPanel.seriesClipRect, null, _this.getTemplateText(point), _this.chart.tooltip.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n if (!this.chart.tooltip.enableMarker) {\n return 0;\n }\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n case 'SplineRangeArea':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + data.point.regions[0].width : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.chart.tooltip.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], headerText: '', textStyle: this.textStyle\n };\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, commonXvalues);\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n if (data) {\n if (!chart.isBlazor) {\n this.triggerSharedTooltip(data, isFirst, this.getTooltipText(data), this.findHeader(data), extraPoints);\n }\n else {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n argument.text.push(this.getTooltipText(data));\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : data;\n }\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n }\n if (chart.isBlazor && data) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerBlazorSharedTooltip(argument, lastData, extraPoints, chart, isFirst);\n }\n if (this.currentPoints.length > 0) {\n this.createTooltip(chart, isFirst, this.findSharedLocation(), this.currentPoints.length === 1 ? this.currentPoints[0].series.clipRect : null, null, this.findShapes(), this.findMarkerHeight(this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints, this.chart.tooltip.template ? this.getTemplateText(data) : null, this.chart.tooltip.template ? argument.template : '');\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerBlazorSharedTooltip = function (argument, point, extraPoints, chart, isFirst) {\n var _this = this;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle,\n data: argument.data\n };\n var blazorSharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n point = null;\n _this.createTooltip(chart, isFirst, _this.findSharedLocation(), null, null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), chart.chartAxisLayoutPanel.seriesClipRect, extraPoints);\n }\n else {\n extraPoints.push(point);\n }\n };\n blazorSharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, blazorSharedTooltip);\n };\n Tooltip.prototype.triggerSharedTooltip = function (point, isFirst, textCollection, headerText, extraPoints) {\n var _this = this;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText,\n point: point.point, series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var sharedTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.headerText = argsData.headerText;\n _this.findMouseValue(point, _this.chart);\n _this.currentPoints.push(point);\n point = null;\n }\n else {\n extraPoints.push(point);\n }\n };\n sharedTooltipSuccess.bind(this, point, extraPoints);\n this.chart.trigger(tooltipRender, argsData, sharedTooltipSuccess);\n if (argsData.template) {\n this.chart.tooltip.template = argsData.template;\n }\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? data.point.symbolLocations[this.lierIndex - 4] :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new RegExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new RegExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '${point.y} Size : ${point.size}' :\n '${point.y}');\n case 'HighLow':\n return format + ('
    High : ${point.high}
    Low : ${point.low}');\n case 'HighLowOpenClose':\n return format + ('
    High : ${point.high}
    Low : ${point.low}
    ' +\n 'Open : ${point.open}
    Close : ${point.close}');\n case 'BoxPlot': {\n return format + '
    ' + (this.lierIndex > 3 ? 'Outliers : ${point.outliers}' :\n 'Maximum : ${point.maximum}
    Q3 : ${point.upperQuartile}
    ' +\n 'Median : ${point.median}
    Q1 : ${point.lowerQuartile}
    Minimum : ${point.minimum}');\n }\n default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : ${point.y}';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n }\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker();\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable jsdoc/require-param */\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Quarter';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @returns {string} skeleton format\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? this.getDayFormat(axis, currentValue, previousValue) : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Get intervalType month format\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getMonthFormat = function (axis, currentValue, previousValue) {\n return ((new Date(currentValue).getFullYear() === new Date(previousValue).getFullYear()) ?\n (axis.isIntervalInDecimal ? 'MMM' : 'MMM d') : 'y MMM');\n };\n /**\n * Get intervalType day label format for the axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n */\n NiceInterval.prototype.getDayFormat = function (axis, currentValue, previousValue) {\n return (axis.valueType === 'DateTime' ?\n ((new Date(currentValue).getMonth() !== new Date(previousValue).getMonth()) ? 'MMMd' :\n (axis.isIntervalInDecimal ? 'd' : 'Ehm')) : 'yMd');\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis axis\n * @param {number} currentValue currentValue\n * @param {number} previousValue previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? this.getMonthFormat(axis, currentValue, previousValue) : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * `Category` module is used to render category axis.\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var ticks = (axis.labelPlacement === 'BetweenTicks' && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : position.toString(), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 { Button } from '@syncfusion/ej2-buttons';\nimport { EventHandler, Property, NotifyPropertyChanges, Animation, attributes } from '@syncfusion/ej2-base';\nimport { Event, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Complex, ChildProperty, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar HIDESPINNER = 'e-hide-spinner';\nvar PROGRESS = 'e-progress';\nvar PROGRESSACTIVE = 'e-progress-active';\nvar CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nvar SpinSettings = /** @class */ (function (_super) {\n __extends(SpinSettings, _super);\n function SpinSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], SpinSettings.prototype, \"template\", void 0);\n __decorate([\n Property(16)\n ], SpinSettings.prototype, \"width\", void 0);\n __decorate([\n Property('Left')\n ], SpinSettings.prototype, \"position\", void 0);\n return SpinSettings;\n}(ChildProperty));\nexport { SpinSettings };\n/**\n * Defines the animation settings.\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(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('None')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property('ease')\n ], AnimationSettings.prototype, \"easing\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ProgressButton = /** @class */ (function (_super) {\n __extends(ProgressButton, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {ProgressButtonModel} options - Specifies progress button model\n * @param {string|HTMLButtonElement} element - Specifies element\n */\n function ProgressButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.step = 1;\n return _this;\n }\n ProgressButton.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.render = function () {\n _super.prototype.render.call(this);\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n };\n /**\n * Starts the button progress at the specified percent.\n *\n * @param {number} percent - Starts the button progress at this percent.\n * @returns {void}\n */\n ProgressButton.prototype.start = function (percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n };\n /**\n * Stops the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.stop = function () {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n };\n /**\n * Complete the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.progressComplete = function () {\n this.isPaused = false;\n this.finishProgress();\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ProgressButton.prototype.getModuleName = function () {\n return 'progress-btn';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n ProgressButton.prototype.destroy = function () {\n var _this = this;\n var classList = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + _super.prototype.getModuleName.call(this),\n 'e-spin-' + this.spinSettings.position.toLowerCase()];\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList);\n var css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow']\n : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n };\n ProgressButton.prototype.init = function () {\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n };\n ProgressButton.prototype.createSpinner = function () {\n var spinner = this.createElement('span', { className: 'e-spinner' });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner, width: this.spinSettings.width || 16, template: this.spinSettings.template\n }, this.createElement);\n };\n ProgressButton.prototype.getSpinner = function () {\n return this.element.getElementsByClassName('e-spinner')[0];\n };\n ProgressButton.prototype.getProgress = function () {\n return this.element.getElementsByClassName(PROGRESS)[0];\n };\n ProgressButton.prototype.setSpinPosition = function (ele) {\n var position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n }\n else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n };\n ProgressButton.prototype.createProgress = function () {\n this.element.appendChild(this.createElement('span', { className: PROGRESS }));\n };\n ProgressButton.prototype.setContent = function () {\n var cont;\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', { className: CONTENTCLS, innerHTML: cont }));\n };\n ProgressButton.prototype.setContentIcon = function (content) {\n var contElem = this.createElement('span', { className: CONTENTCLS, innerHTML: content });\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('e-icon-btn');\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 = contElem.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n contElem.insertBefore(span, node);\n }\n else {\n contElem.appendChild(span);\n }\n }\n this.element.appendChild(contElem);\n };\n ProgressButton.prototype.clickHandler = function () {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n };\n ProgressButton.prototype.startProgress = function (percent, progressTime) {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!(clsList.contains(HIDESPINNER))) {\n showSpinner(this.element);\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - (this.duration * 1 / 100) : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n };\n ProgressButton.prototype.startAnimate = function (timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n var _this = this;\n try {\n var timeDiff = timestamp - prevTime;\n var stepTime = this.duration * step / 100;\n var timeDiffBuffer_1 = timeDiff ? (timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime) : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer_1;\n prevTime = timestamp - timeDiffBuffer_1;\n percent = percent + (timeDiff - timeDiffBuffer_1) / this.duration * 100;\n prevPercent = ((progressTime - prevProgressTime) % stepTime === 0 || percent === 100) ? percent : prevPercent;\n var args = { percent: prevPercent, currentDuration: progressTime, step: step };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else {\n this.trigger('progress', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n }\n catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n };\n ProgressButton.prototype.successCallback = function (args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n var _this = this;\n var percent = perc;\n var prevPercent = pPerc;\n var timeDiffBuffer = timDif;\n var progressTime = prgTim;\n var prevProgressTime = pPrgTim;\n var prevTime = pTim;\n var isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(function () {\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n _this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(function () {\n _this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n }, (this.duration / 100) - timeDiffBuffer);\n }\n else {\n this.interval = window.setTimeout(function () {\n _this.progressTime = _this.percent = 0;\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n _this.element.setAttribute('aria-valuenow', '0');\n _this.hideSpin();\n }, 100);\n }\n }\n };\n ProgressButton.prototype.startContAnimate = function () {\n var _this = this;\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n (new Animation({})).animate(ele, {\n duration: this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: function () {\n if (_this.spinSettings.position === 'Center') {\n _this.setSpinnerSize();\n }\n },\n end: function () {\n ele.classList.add('e-animate-end');\n }\n });\n }\n else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n };\n ProgressButton.prototype.finishProgress = function () {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n var count = 100;\n for (var i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = (this.percent < 100) ? (i + '%') : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n var args = { step: this.step, currentDuration: this.progressTime, percent: 100 };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n };\n ProgressButton.prototype.setSpinnerSize = function () {\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n var spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n };\n ProgressButton.prototype.hideSpin = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!(this.element.classList.contains(HIDESPINNER))) {\n hideSpinner(this.element);\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n var ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n };\n ProgressButton.prototype.setIconSpan = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n var iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n }\n else {\n cont.appendChild(iconSpan);\n }\n };\n ProgressButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress', 'aria-valuemin': '0', 'aria-valuemax': '100', 'aria-valuenow': '0'\n });\n };\n ProgressButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n };\n ProgressButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ProgressButtonModel} newProp - Specifies new properties\n * @param {ProgressButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var ele = this.element;\n var isSpinning = false;\n var clsList = this.element.querySelector('.e-spinner-pane').classList;\n if (clsList.contains('e-spin-show')) {\n isSpinning = true;\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n this.setContent();\n this.createSpinner();\n if (isSpinning) {\n showSpinner(this.element);\n isSpinning = false;\n }\n if (this.enableProgress) {\n this.createProgress();\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n }\n else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to ProgressButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n ProgressButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"enableProgress\", void 0);\n __decorate([\n Property(2000)\n ], ProgressButton.prototype, \"duration\", void 0);\n __decorate([\n Property('Left')\n ], ProgressButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], ProgressButton.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"isToggle\", void 0);\n __decorate([\n Property(false)\n ], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, SpinSettings)\n ], ProgressButton.prototype, \"spinSettings\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], ProgressButton.prototype, \"animationSettings\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], ProgressButton.prototype, \"fail\", void 0);\n ProgressButton = __decorate([\n NotifyPropertyChanges\n ], ProgressButton);\n return ProgressButton;\n}(Button));\nexport { ProgressButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { ProgressButton } from '@syncfusion/ej2-splitbuttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ProgressButtonComponent` represents the react ProgressButton Component.\n * ```ts\n * \n * ```\n */\nvar ProgressButtonComponent = /** @class */ (function (_super) {\n __extends(ProgressButtonComponent, _super);\n function ProgressButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ProgressButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ProgressButtonComponent;\n}(ProgressButton));\nexport { ProgressButtonComponent };\napplyMixins(ProgressButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, Animation } from '@syncfusion/ej2-base';\nimport { Browser, isNullOrUndefined as isNOU, getUniqueID, formatUnit, EventHandler } from '@syncfusion/ej2-base';\nimport { Collection, Complex, setStyleAttribute, Event, detach, L10n } from '@syncfusion/ej2-base';\nimport { attributes, extend, closest, compile as templateCompiler, classList, isUndefined } from '@syncfusion/ej2-base';\nimport { Touch, isBlazor, SanitizeHtmlHelper, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-toast';\nvar CONTAINER = 'e-toast-container';\nvar TITLE = 'e-toast-title';\nvar WIDTHFULL = 'e-toast-full-width';\nvar CONTENT = 'e-toast-content';\nvar MESSAGE = 'e-toast-message';\nvar ICON = 'e-toast-icon';\nvar PROGRESS = 'e-toast-progress';\nvar ACTIOBUTTONS = 'e-toast-actions';\nvar CLOSEBTN = 'e-toast-close-icon';\nvar RTL = 'e-rtl';\n// eslint-disable-next-line\nvar TOAST_REF_ELEMENT = 'e-toast-ref-element';\nvar TOAST_BLAZOR_HIDDEN = 'e-blazor-toast-hidden';\n/**\n * An object that is used to configure the Toast X Y positions.\n */\nvar ToastPosition = /** @class */ (function (_super) {\n __extends(ToastPosition, _super);\n function ToastPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Left')\n ], ToastPosition.prototype, \"X\", void 0);\n __decorate([\n Property('Top')\n ], ToastPosition.prototype, \"Y\", void 0);\n return ToastPosition;\n}(ChildProperty));\nexport { ToastPosition };\n/**\n * An object that is used to configure the action button model properties and event.\n */\nvar ButtonModelProps = /** @class */ (function (_super) {\n __extends(ButtonModelProps, _super);\n function ButtonModelProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"model\", void 0);\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"click\", void 0);\n return ButtonModelProps;\n}(ChildProperty));\nexport { ButtonModelProps };\n/**\n * An object that is used to configure the animation object of Toast.\n */\nvar ToastAnimations = /** @class */ (function (_super) {\n __extends(ToastAnimations, _super);\n function ToastAnimations() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('FadeIn')\n ], ToastAnimations.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], ToastAnimations.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], ToastAnimations.prototype, \"easing\", void 0);\n return ToastAnimations;\n}(ChildProperty));\nexport { ToastAnimations };\n/**\n * An object that is used to configure the show/hide animation settings of Toast.\n */\nvar ToastAnimationSettings = /** @class */ (function (_super) {\n __extends(ToastAnimationSettings, _super);\n function ToastAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'FadeIn', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"show\", void 0);\n __decorate([\n Complex({ effect: 'FadeOut', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"hide\", void 0);\n return ToastAnimationSettings;\n}(ChildProperty));\nexport { ToastAnimationSettings };\n/**\n * The Toast is a notification pop-up that showing on desired position which can provide an information to the user.\n * ```html\n *
    \n * \n * ```\n */\nvar Toast = /** @class */ (function (_super) {\n __extends(Toast, _super);\n /**\n * Initializes a new instance of the Toast class.\n *\n * @param {ToastModel} options - Specifies Toast model properties as options.\n * @param {HTMLElement} element - Specifies the element that is rendered as a Toast.\n */\n function Toast(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.toastCollection = [];\n return _this;\n }\n /**\n * Gets the Component module name.\n *\n * @returns {string} - returns the string\n * @private\n */\n Toast.prototype.getModuleName = function () {\n return 'toast';\n };\n /**\n * Gets the persisted state properties of the Component.\n *\n * @returns {string} - returns the string\n */\n Toast.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Toast.prototype.destroy = function () {\n this.hide('All');\n this.element.classList.remove(CONTAINER);\n setStyleAttribute(this.element, { 'position': '', 'z-index': '' });\n if (!isNOU(this.refElement) && !isNOU(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore(this.element, this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (!this.isBlazorServer()) {\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.preRender = function () {\n //There is no event handler\n this.isDevice = Browser.isDevice;\n if (this.width === '300px') {\n this.width = (this.isDevice && screen.width < 768) ? '100%' : '300px';\n }\n if (isNOU(this.target)) {\n this.target = document.body;\n }\n if (this.enableRtl && !this.isBlazorServer()) {\n this.element.classList.add(RTL);\n }\n };\n /**\n * Initialize the component rendering\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.render = function () {\n this.progressObj = [];\n this.intervalId = [];\n this.contentTemplate = null;\n this.toastTemplate = null;\n if (this.isDevice && screen.width < 768) {\n new Touch(this.element, { swipe: this.swipeHandler.bind(this) });\n }\n this.renderComplete();\n this.initRenderClass = this.element.className;\n };\n /**\n * To show Toast element on a document with the relative position.\n *\n * @param {ToastModel} toastObj - To show Toast element on screen.\n * @returns {void}\n\n */\n Toast.prototype.show = function (toastObj) {\n var collectionObj;\n if (!isNOU(toastObj)) {\n this.templateChanges(toastObj);\n collectionObj = JSON.parse(JSON.stringify(toastObj));\n extend(this, this, toastObj);\n }\n if (isNOU(this.toastContainer)) {\n this.toastContainer = this.getContainer();\n var target = typeof (this.target) === 'string' ? document.querySelector(this.target) : document.body;\n if (isNOU(target)) {\n return;\n }\n if (target.tagName === 'BODY') {\n this.toastContainer.style.position = 'fixed';\n }\n else {\n this.toastContainer.style.position = 'absolute';\n target.style.position = 'relative';\n }\n this.setPositioning(this.position);\n target.appendChild(this.toastContainer);\n }\n if (this.isBlazorServer() && this.element.classList.contains('e-control')) {\n this.isToastModel(toastObj);\n return;\n }\n this.toastEle = this.createElement('div', { className: ROOT, id: getUniqueID('toast') });\n this.setWidthHeight();\n this.setCSSClass(this.cssClass);\n // eslint-disable-next-line\n (isNOU(this.template) || this.template === '') ? this.personalizeToast() : this.templateRendering();\n this.setProgress();\n this.setCloseButton();\n this.setAria();\n this.appendToTarget(toastObj);\n if (!isNOU(collectionObj)) {\n extend(collectionObj, { element: [this.toastEle] }, true);\n this.toastCollection.push(collectionObj);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * @param {string} id - specifies the id\n * @param {ToastModel} toastObj - specifies the model\n * @returns {void}\n * @hidden\n\n * This method applicable for blazor alone.\n */\n Toast.prototype.showToast = function (id, toastObj) {\n this.toastEle = this.element.querySelector('#' + id);\n this.show(toastObj);\n };\n Toast.prototype.isToastModel = function (toastObj) {\n this.toastContainer = this.element;\n this.setPositioning(this.position);\n // eslint-disable-next-line\n var proxy = this;\n if (!isNOU(proxy.element.lastElementChild)) {\n this.setProgress();\n }\n this.setAria();\n this.appendToTarget(toastObj);\n };\n Toast.prototype.swipeHandler = function (e) {\n var toastEle = closest(e.originalEvent.target, '.' + ROOT + ':not(.' + CONTAINER + ')');\n var hideAnimation = this.animation.hide.effect;\n if (!isNOU(toastEle)) {\n if (e.swipeDirection === 'Right') {\n this.animation.hide.effect = 'SlideRightOut';\n this.hideToast('swipe', toastEle);\n }\n else if (e.swipeDirection === 'Left') {\n this.animation.hide.effect = 'SlideLeftOut';\n this.hideToast('swipe', toastEle);\n }\n this.animation.hide.effect = hideAnimation;\n }\n };\n Toast.prototype.templateChanges = function (toastObj) {\n if (!isUndefined(toastObj.content) && !isNOU(this.contentTemplate) && this.content !== toastObj.content) {\n this.clearContentTemplate();\n }\n if (!isUndefined(toastObj.template) && !isNOU(this.toastTemplate) && this.template !== toastObj.template) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.setCSSClass = function (cssClass) {\n if (cssClass) {\n var split = cssClass.indexOf(',') !== -1 ? ',' : ' ';\n classList(this.toastEle, cssClass.split(split), []);\n }\n };\n Toast.prototype.setWidthHeight = function () {\n if (this.width === '300px') {\n this.toastEle.style.width = formatUnit(this.width);\n }\n else if (this.width === '100%') {\n this.toastContainer.classList.add(WIDTHFULL);\n }\n else {\n this.toastEle.style.width = formatUnit(this.width);\n this.toastContainer.classList.remove(WIDTHFULL);\n }\n this.toastEle.style.height = formatUnit(this.height);\n };\n Toast.prototype.templateRendering = function () {\n this.fetchEle(this.toastEle, this.template, 'template');\n };\n /**\n * @param {string} value - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n */\n Toast.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNOU(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n /**\n * To Hide Toast element on a document.\n * To Hide all toast element when passing 'All'.\n *\n * @param {HTMLElement} element - To Hide Toast element on screen.\n * @returns {void}\n */\n Toast.prototype.hide = function (element) {\n this.hideToast('', element);\n };\n Toast.prototype.hideToast = function (interactionType, element) {\n if (isNOU(this.toastContainer) || this.toastContainer.childElementCount === 0) {\n return;\n }\n if (typeof element === 'string' && element === 'All') {\n for (var i = 0; i < this.toastContainer.childElementCount; i++) {\n this.destroyToast(this.toastContainer.children[i], interactionType);\n }\n return;\n }\n if (isNOU(element)) {\n element = (this.newestOnTop ? this.toastContainer.lastElementChild : this.toastContainer.firstElementChild);\n }\n this.destroyToast(element, interactionType);\n };\n Toast.prototype.fetchEle = function (ele, value, prob) {\n value = typeof (value) === 'string' ? this.sanitizeHelper(value) : value;\n // eslint-disable-next-line\n var templateFn;\n var tempVar;\n var tmpArray;\n var templateProps;\n if (ele.classList.contains(TITLE)) {\n templateProps = this.element.id + 'title';\n }\n else if (ele.classList.contains(CONTENT)) {\n templateProps = this.element.id + 'content';\n }\n else {\n templateProps = this.element.id + 'template';\n }\n // eslint-disable-next-line\n prob === 'content' ? tempVar = this.contentTemplate : tempVar = this.toastTemplate;\n if (!isNOU(tempVar)) {\n ele.appendChild(tempVar.cloneNode(true));\n return ele;\n }\n try {\n if (document.querySelectorAll(value).length > 0) {\n var elem = null;\n if (prob !== 'title') {\n elem = document.querySelector(value);\n ele.appendChild(elem);\n elem.style.display = '';\n }\n var clo = isNOU(elem) ? tempVar : elem.cloneNode(true);\n // eslint-disable-next-line\n prob === 'content' ? this.contentTemplate = clo : this.toastTemplate = clo;\n }\n }\n catch (e) {\n templateFn = templateCompiler(value);\n // eslint-disable-next-line\n var templateValue = value;\n }\n if (!isNOU(templateFn)) {\n if (!this.isBlazorServer()) {\n tmpArray = templateFn({}, this, prob, null, true);\n }\n else {\n var isString = true;\n tmpArray = templateFn({}, this, prob, templateProps, isString);\n }\n }\n if (!isNOU(tmpArray) && tmpArray.length > 0 && !(isNOU(tmpArray[0].tagName) && tmpArray.length === 1)) {\n [].slice.call(tmpArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n return ele;\n };\n Toast.prototype.clearProgress = function (intervalId) {\n if (!isNOU(this.intervalId[intervalId])) {\n clearInterval(this.intervalId[intervalId]);\n delete this.intervalId[intervalId];\n }\n if (!isNOU(this.progressObj[intervalId])) {\n clearInterval(this.progressObj[intervalId].intervalId);\n delete this.progressObj[intervalId];\n }\n };\n Toast.prototype.clearContainerPos = function () {\n var _this = this;\n if (this.isBlazorServer()) {\n this.toastContainer = null;\n return;\n }\n if (this.customPosition) {\n setStyleAttribute(this.toastContainer, { 'left': '', 'top': '' });\n this.toastContainer = null;\n this.customPosition = false;\n }\n else {\n [ROOT + '-top-left',\n ROOT + '-top-right',\n ROOT + '-bottom-left',\n ROOT + '-bottom-right',\n ROOT + '-bottom-center',\n ROOT + '-top-center',\n ROOT + '-full-width'].forEach(function (pos) {\n if (!isNOU(_this.toastContainer) && _this.toastContainer.classList.contains(pos)) {\n _this.toastContainer.classList.remove(pos);\n }\n });\n this.toastContainer = null;\n }\n if (!isNOU(this.contentTemplate)) {\n this.clearContentTemplate();\n }\n if (!isNOU(this.toastTemplate)) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.clearContentTemplate = function () {\n this.contentTemplate.style.display = 'none';\n document.body.appendChild(this.contentTemplate);\n this.contentTemplate = null;\n };\n Toast.prototype.clearToastTemplate = function () {\n this.toastTemplate.style.display = 'none';\n document.body.appendChild(this.toastTemplate);\n this.toastTemplate = null;\n };\n Toast.prototype.isBlazorServer = function () {\n return (isBlazor() && this.isServerRendered);\n };\n Toast.prototype.destroyToast = function (toastEle, interactionType) {\n var _this = this;\n var toastObj;\n for (var i = 0; i < this.toastCollection.length; i++) {\n if (this.toastCollection[i].element[0] === toastEle) {\n toastObj = this.toastCollection[i];\n this.toastCollection.splice(i, 1);\n }\n }\n var toastBeforeClose = {\n options: this,\n cancel: false,\n type: interactionType,\n element: toastEle,\n toastContainer: this.toastContainer\n };\n var hideAnimate = this.animation.hide;\n var animate = {\n duration: hideAnimate.duration, name: hideAnimate.effect, timingFunction: hideAnimate.easing\n };\n var intervalId = parseInt(toastEle.id.split('toast_')[1], 10);\n var toastClose = this.isBlazorServer() ? {\n options: toastObj,\n toastContainer: this.toastContainer\n } : {\n options: toastObj,\n toastContainer: this.toastContainer,\n toastObj: this,\n };\n this.trigger('beforeClose', toastBeforeClose, function (toastBeforeCloseArgs) {\n if (!toastBeforeCloseArgs.cancel) {\n if (!isNOU(_this.progressObj[intervalId]) && !isNOU(toastEle.querySelector('.' + PROGRESS))) {\n _this.progressObj[intervalId].progressEle.style.width = '0%';\n }\n animate.end = function () {\n _this.clearProgress(intervalId);\n if (!_this.isBlazorServer() || isNOU(toastObj)) {\n detach(toastEle);\n }\n _this.trigger('close', toastClose);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos();\n }\n };\n new Animation({}).animate(toastEle, animate);\n }\n });\n };\n Toast.prototype.personalizeToast = function () {\n this.setIcon();\n this.setTitle();\n this.setContent();\n this.actionButtons();\n };\n Toast.prototype.setAria = function () {\n attributes(this.toastEle, { 'role': 'alert' });\n };\n Toast.prototype.setPositioning = function (pos) {\n if (this.isBlazorServer()) {\n return;\n }\n if (!isNaN(parseFloat(pos.X)) || !isNaN(parseFloat(pos.Y))) {\n this.customPosition = true;\n setStyleAttribute(this.toastContainer, { 'left': formatUnit(pos.X), 'top': formatUnit(pos.Y) });\n }\n else {\n this.toastContainer.classList.add(ROOT + '-' + pos.Y.toString().toLowerCase() + '-' + pos.X.toString().toLowerCase());\n }\n };\n Toast.prototype.setCloseButton = function () {\n if (!this.showCloseButton) {\n return;\n }\n // eslint-disable-next-line\n var localeText = { close: 'Close' };\n this.l10n = new L10n('toast', localeText, this.locale);\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n var closeBtn = this.createElement('div', { className: CLOSEBTN + ' e-icons ', attrs: { tabindex: '0', 'aria-label': closeIconTitle } });\n this.toastEle.appendChild(closeBtn);\n };\n Toast.prototype.setProgress = function () {\n if (this.timeOut > 0) {\n var id = parseInt(this.toastEle.id.split('toast_')[1], 10);\n this.intervalId[id] = window.setTimeout(this.destroyToast.bind(this, this.toastEle), this.timeOut);\n this.progressObj[id] = { hideEta: null, intervalId: null, maxHideTime: null,\n element: null, timeOutId: null, progressEle: null };\n this.progressObj[id].maxHideTime = parseFloat(this.timeOut + '');\n this.progressObj[id].hideEta = new Date().getTime() + this.progressObj[id].maxHideTime;\n this.progressObj[id].element = this.toastEle;\n if (this.extendedTimeout > 0) {\n EventHandler.add(this.toastEle, 'mouseover', this.toastHoverAction.bind(this, id));\n EventHandler.add(this.toastEle, 'mouseleave', this.delayedToastProgress.bind(this, id));\n this.progressObj[id].timeOutId = this.intervalId[id];\n }\n if (this.showProgressBar) {\n this.progressBarEle = this.createElement('div', { className: PROGRESS });\n this.toastEle.insertBefore(this.progressBarEle, this.toastEle.children[0]);\n this.progressObj[id].intervalId = setInterval(this.updateProgressBar.bind(this, this.progressObj[id]), 10);\n this.progressObj[id].progressEle = this.progressBarEle;\n }\n }\n };\n Toast.prototype.toastHoverAction = function (id) {\n clearTimeout(this.progressObj[id].timeOutId);\n clearInterval(this.progressObj[id].intervalId);\n this.progressObj[id].hideEta = 0;\n var toastEle = this.progressObj[id].element;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n this.progressObj[id].progressEle.style.width = '0%';\n }\n };\n Toast.prototype.delayedToastProgress = function (id) {\n var progress = this.progressObj[id];\n var toastEle = progress.element;\n progress.timeOutId = window.setTimeout(this.destroyToast.bind(this, toastEle), this.extendedTimeout);\n progress.maxHideTime = parseFloat(this.extendedTimeout + '');\n progress.hideEta = new Date().getTime() + progress.maxHideTime;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n progress.intervalId = setInterval(this.updateProgressBar.bind(this, progress), 10);\n }\n };\n Toast.prototype.updateProgressBar = function (progressObj) {\n var percentage = ((progressObj.hideEta - (new Date().getTime())) / progressObj.maxHideTime) * 100;\n percentage = this.progressDirection === 'Ltr' ? 100 - percentage : percentage;\n progressObj.progressEle.style.width = percentage + '%';\n };\n Toast.prototype.setIcon = function () {\n if (isNOU(this.icon) || this.icon.length === 0) {\n return;\n }\n var iconEle = this.createElement('div', { className: ICON + ' e-icons ' + this.icon });\n this.toastEle.appendChild(iconEle);\n };\n Toast.prototype.setTitle = function () {\n if (isNOU(this.title)) {\n return;\n }\n var titleEle = this.createElement('div', { className: TITLE });\n titleEle = this.fetchEle(titleEle, this.title, 'title');\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(titleEle);\n this.toastEle.appendChild(msgContainer);\n };\n Toast.prototype.setContent = function () {\n var contentEle = this.createElement('div', { className: CONTENT });\n var ele = this.element;\n if (isNOU(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s/g, '') !== '';\n if ((ele.children.length > 0 || isContent) && !(ele.firstElementChild && ele.firstElementChild.classList.contains(ROOT))) {\n this.innerEle = document.createDocumentFragment();\n var tempEle_1 = this.createElement('div');\n while (ele.childNodes.length !== 0) {\n this.innerEle.appendChild(this.element.childNodes[0]);\n }\n contentEle.appendChild(this.innerEle);\n [].slice.call(contentEle.children).forEach(function (ele) {\n tempEle_1.appendChild(ele.cloneNode(true));\n });\n this.content = tempEle_1;\n this.appendMessageContainer(contentEle);\n }\n }\n else {\n if (typeof (this.content) === 'object' && !isNOU(this.content.tagName)) {\n contentEle.appendChild(this.content);\n this.content = this.content.cloneNode(true);\n this.appendMessageContainer(contentEle);\n }\n else {\n contentEle = this.fetchEle(contentEle, this.content, 'content');\n this.appendMessageContainer(contentEle);\n }\n }\n };\n Toast.prototype.appendMessageContainer = function (element) {\n if (this.toastEle.querySelectorAll('.' + MESSAGE).length > 0) {\n this.toastEle.querySelector('.' + MESSAGE).appendChild(element);\n }\n else {\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(element);\n this.toastEle.appendChild(msgContainer);\n }\n };\n Toast.prototype.actionButtons = function () {\n var _this = this;\n var actionBtnContainer = this.createElement('div', { className: ACTIOBUTTONS });\n [].slice.call(this.buttons).forEach(function (actionBtn) {\n if (isNOU(actionBtn.model)) {\n return;\n }\n var btnDom = _this.createElement('button');\n btnDom.setAttribute('type', 'button');\n if (isNOU(actionBtn.model.cssClass) || actionBtn.model.cssClass.length === 0) {\n actionBtn.model.cssClass = 'e-primary';\n }\n btnDom.classList.add('e-small');\n new Button(actionBtn.model, btnDom);\n if (!isNOU(actionBtn.click) && typeof (actionBtn.click) === 'function') {\n EventHandler.add(btnDom, 'click', actionBtn.click);\n }\n actionBtnContainer.appendChild(btnDom);\n });\n if (actionBtnContainer.childElementCount > 0) {\n this.appendMessageContainer(actionBtnContainer);\n }\n };\n Toast.prototype.appendToTarget = function (toastObj) {\n var _this = this;\n var toastBeforeOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle,\n cancel: false\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle,\n cancel: false\n };\n this.trigger('beforeOpen', toastBeforeOpen, function (toastBeforeOpenArgs) {\n if (!toastBeforeOpenArgs.cancel) {\n if (!_this.isBlazorServer()) {\n _this.toastEle.style.display = 'none';\n }\n if (_this.newestOnTop && _this.toastContainer.childElementCount !== 0) {\n _this.toastContainer.insertBefore(_this.toastEle, _this.toastContainer.children[0]);\n }\n else if (!_this.isBlazorServer()) {\n _this.toastContainer.appendChild(_this.toastEle);\n }\n removeClass([_this.toastEle], TOAST_BLAZOR_HIDDEN);\n EventHandler.add(_this.toastEle, 'click', _this.clickHandler, _this);\n EventHandler.add(_this.toastEle, 'keydown', _this.keyDownHandler, _this);\n _this.toastContainer.style.zIndex = getZindexPartial(_this.toastContainer) + '';\n _this.displayToast(_this.toastEle, toastObj);\n }\n else if (_this.isBlazorServer()) {\n var intervalId = parseInt(_this.toastEle.id.split('toast_')[1], 10);\n _this.clearProgress(intervalId);\n detach(_this.toastEle);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos();\n }\n }\n });\n };\n Toast.prototype.clickHandler = function (e) {\n var _this = this;\n if (!this.isBlazorServer()) {\n e.stopPropagation();\n }\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n var clickArgs = this.isBlazorServer() ? {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e\n } : {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e, toastObj: this\n };\n var isCloseIcon = target.classList.contains(CLOSEBTN);\n this.trigger('click', clickArgs, function (toastClickArgs) {\n if ((isCloseIcon && !toastClickArgs.cancel) || toastClickArgs.clickToClose) {\n _this.destroyToast(toastEle, 'click');\n }\n });\n };\n Toast.prototype.keyDownHandler = function (e) {\n if (e.target.classList.contains(CLOSEBTN) &&\n (e.keyCode === 13 || e.keyCode === 32)) {\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n this.destroyToast(toastEle, 'key');\n }\n };\n Toast.prototype.displayToast = function (toastEle, toastObj) {\n var _this = this;\n var showAnimate = this.animation.show;\n var animate = {\n duration: showAnimate.duration, name: showAnimate.effect, timingFunction: showAnimate.easing\n };\n var toastOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle,\n };\n animate.begin = function () {\n toastEle.style.display = '';\n };\n animate.end = function () {\n _this.trigger('open', toastOpen);\n };\n new Animation(animate).animate(toastEle);\n };\n Toast.prototype.getContainer = function () {\n this.element.classList.add(CONTAINER);\n return this.element;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ToastModel} newProp - specifies the new property\n * @param {ToastModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Toast.prototype.onPropertyChanged = function (newProp, oldProp) {\n var container = this.element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n // eslint-disable-next-line\n newProp.enableRtl ? container.classList.add(RTL) : container.classList.remove(RTL);\n break;\n }\n }\n };\n __decorate([\n Property('300px')\n ], Toast.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toast.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"icon\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"newestOnTop\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showProgressBar\", void 0);\n __decorate([\n Property(5000)\n ], Toast.prototype, \"timeOut\", void 0);\n __decorate([\n Property('Rtl')\n ], Toast.prototype, \"progressDirection\", void 0);\n __decorate([\n Property(1000)\n ], Toast.prototype, \"extendedTimeout\", void 0);\n __decorate([\n Complex({}, ToastAnimationSettings)\n ], Toast.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, ToastPosition)\n ], Toast.prototype, \"position\", void 0);\n __decorate([\n Collection([{}], ButtonModelProps)\n ], Toast.prototype, \"buttons\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"click\", void 0);\n Toast = __decorate([\n NotifyPropertyChanges\n ], Toast);\n return Toast;\n}(Component));\nexport { Toast };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Toast } from '@syncfusion/ej2-notifications';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Toast Component\n * ```html\n * \n * ```\n */\nvar ToastComponent = /** @class */ (function (_super) {\n __extends(ToastComponent, _super);\n function ToastComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'buttonModelProps': 'buttonModelProp' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ToastComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ToastComponent;\n}(Toast));\nexport { ToastComponent };\napplyMixins(ToastComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, blazorCultureFormats, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.blazorTimeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isBlazorServer = false;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'timepicker') ? true : false;\n if (!this.isBlazorServer) {\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n }\n };\n // element creation\n TimePicker.prototype.render = function () {\n if (!this.isBlazorServer) {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n }\n else {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + TIMEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n this.bindEvents();\n if (!this.isBlazorServer) {\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n if (!this.isBlazorServer) {\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n if (this.isBlazorServer) {\n this.unBindEvents();\n }\n else {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.generateList();\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n if (!this.isBlazorServer) {\n this.createListItems();\n }\n else {\n this.listWrapper = this.popupWrapper.querySelector('.e-content');\n }\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n if (this.isBlazorServer) {\n this.blazorTimeCollections = [];\n for (var index = 0; index < this.liCollections.length; index++) {\n this.blazorTimeCollections.push(this.liCollections[index].getAttribute('data-value'));\n }\n }\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n if (!_this.isBlazorServer) {\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n }\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: isBlazor() ? 't' : 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) || (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue((isBlazor() ? 'dayPeriods.wide' : 'dayPeriods.format.wide'), getDefaultDateObject());\n }\n else {\n var gregorianFormat = (isBlazor() ? '.dates.dayPeriods.abbreviated' :\n '.dates.calendars.gregorian.dayPeriods.format.abbreviated');\n var mainVal = isBlazor() ? '' : 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.blazorTimeCollections[0]).setMilliseconds(0) : this.timeCollections[0];\n var scrollTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.scrollTo.toLocaleTimeString()).setMilliseconds(0) :\n this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = isBlazor() ? (getValue('d', getValue(this.locale, blazorCultureFormats))) :\n (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.getBlazorCultureFormat = function (formatVal) {\n return (getValue(formatVal, getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a');\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.updateBlazorTimeCollections = function (listData) {\n this.blazorTimeCollections = listData;\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (this.isPopupOpen() && !this.isBlazorServer) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: event\n });\n }\n if (!this.enableMask || this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n if (!this.isBlazorServer) {\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n }\n else {\n if (!this.isBlazorServer) {\n this.updateValue(this.inputElement.value, event);\n }\n else {\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n }\n else {\n this.show(event);\n }\n break;\n case 'escape':\n if (!this.isBlazorServer) {\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n }\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart == 0 && this.inputElement.selectionEnd == this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== length && event.action == 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action == 'shiftTab') || (event.action == 'left' || event.action == 'right')) {\n event.preventDefault();\n }\n this.notify(\"keyDownHandler\", { module: \"MaskedDateTime\",\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.isBlazorServer ? null : this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n _this.popupWrapper = _this.popupObj = null;\n }\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(SELECTED)) {\n if (!this.isBlazorServer) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n else {\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.inputElement.setAttribute('value', li.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, false);\n this.addSelection();\n }\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler), this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.isBlazorServer ? this.inputEleValue : this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n }\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n if (!this.isBlazorServer) {\n this.checkErrorState(timeValue);\n }\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify(\"inputHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler));\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify(\"clearHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n TimePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n if (!this.isBlazorServer) {\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n }\n break;\n case 'max':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode && !this.isBlazorServer) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time == '') {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) || this.isBlazorServer ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? [] :\n this.blazorTimeCollections) : this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index = this.validLiElement(i);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index = this.validLiElement(i, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.elementValue(new Date(this.timeCollections[index]));\n }\n };\n TimePicker.prototype.findNextInBlazor = function (event) {\n var count = isNullOrUndefined(this.blazorTimeCollections) ? 0 : this.blazorTimeCollections.length;\n var index = 0;\n var value = this.createDateObj(this.inputElement.value);\n switch (event.action) {\n case 'home':\n this.activeIndex = index;\n break;\n case 'end':\n index = count - 1;\n this.activeIndex = index;\n break;\n case 'down':\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index_1 = this.validLiElement(i);\n this.activeIndex = index_1;\n break;\n }\n else if (i === count - 1) {\n var index_2 = this.validLiElement(0);\n this.activeIndex = index_2;\n break;\n }\n }\n break;\n case 'up':\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index_3 = this.validLiElement(i, true);\n this.activeIndex = index_3;\n break;\n }\n else if (i === 0) {\n var index_4 = this.validLiElement(count - 1);\n this.activeIndex = index_4;\n break;\n }\n }\n break;\n }\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n if (this.isBlazorServer && isNullOrUndefined(this.popupWrapper)) {\n var items = this.blazorTimeCollections;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n elementIndex = i;\n break;\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n elementIndex = i;\n break;\n }\n }\n }\n }\n else {\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? 0 :\n this.blazorTimeCollections.length) : this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (isNullOrUndefined(this.popupObj) && this.isBlazorServer) {\n if (isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.findNextInBlazor(event);\n }\n }\n else {\n if (this.liCollections.length > 0) {\n if (this.isBlazorServer ? (isNullOrUndefined(this.activeIndex)) : (isNullOrUndefined(this.value) &&\n isNullOrUndefined(this.activeIndex))) {\n this.selectNextItem(event);\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n if (!this.isBlazorServer) {\n nextItem = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(new Date(nextItem));\n }\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (!this.isBlazorServer) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return isBlazor() ? (getValue('t', getValue(c, blazorCultureFormats))).replace(/tt/, 'a') :\n getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return isBlazor() ? (getValue('d', getValue(c, blazorCultureFormats))) :\n getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((!this.isBlazorServer && this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))\n || (this.isBlazorServer && this.blazorTimeCollections[i] === this.blazorTimeCollections[this.activeIndex])) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = isBlazor() ?\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(target) ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value == this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n if (!this.isBlazorServer && this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n if (this.isBlazorServer) {\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this.isBlazorServer ? null : this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.isBlazorServer ? null : (this.popupObj || null),\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n if ((isBlazor() && _this.isServerRendered)) {\n eventArgs.popup = _this.popupObj || null;\n }\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = _this.inputWrapper.container.offsetWidth + 'px';\n _this.popupWrapper.style.height = 'auto';\n }\n if (_this.isBlazorServer) {\n _this.openPopupEventArgs.popup = _this.popupObj;\n }\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n }\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n if (!this.isBlazorServer) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n if (!this.isBlazorServer) {\n this.getProperty(newProp, prop);\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'strictMode':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n }\n break;\n case 'scrollTo':\n if (!this.isBlazorServer) {\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n }\n else {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend, isBlazor, blazorCultureFormats } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n this.inputElement.removeAttribute('aria-placeholder');\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n this.setValue();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function () {\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld));\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject :\n new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n _super.prototype.changeEvent.call(this, e);\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[pIdField]) {\n idx = this.getIndex(item[pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `MenuComponent` represents the react Menu Component.\n * ```ts\n * \n * ```\n */\nvar MenuComponent = /** @class */ (function (_super) {\n __extends(MenuComponent, _super);\n function MenuComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'menuItems': 'menuItem' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n MenuComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('ul', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return MenuComponent;\n}(Menu));\nexport { MenuComponent };\napplyMixins(MenuComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActElePosition.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n var _this = this;\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach(function (val) {\n _this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerRendered) {\n _super.prototype.refresh.call(this);\n }\n else if (this.isServerRendered && this.loadOn !== 'Dynamic') {\n this.setActiveBorder();\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n };\n Tab.prototype.renderContainer = function () {\n if (this.isServerRendered) {\n this.isTemplate = false;\n return;\n }\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n if (!isNOU(this.tbItem)) {\n for (var i = 0; i < this.items.length; i++) {\n var tabID = this.items[i].id;\n this.tbItem[i].setAttribute('data-id', tabID);\n }\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.serverItemsChanged = function () {\n this.enableAnimation = false;\n this.setActive(this.selectedItem, true);\n if (this.loadOn !== 'Dynamic' && !isNOU(this.cntEle)) {\n var itemCollection = [].slice.call(this.cntEle.children);\n var content_1 = CLS_CONTENT + this.tabId + '_' + this.selectedItem;\n itemCollection.forEach(function (item) {\n if (item.classList.contains(CLS_ACTIVE) && item.id !== content_1) {\n item.classList.remove(CLS_ACTIVE);\n }\n if (item.id === content_1) {\n item.classList.add(CLS_ACTIVE);\n }\n });\n this.prevIndex = this.selectedItem;\n this.triggerAnimation(CLS_ITEM + this.tabId + '_' + this.selectedItem, false);\n }\n this.enableAnimation = true;\n };\n Tab.prototype.headerReady = function () {\n this.initRender = true;\n this.hdrEle = this.getTabHeader();\n this.setOrientation(this.headerPlacement, this.hdrEle);\n if (!isNOU(this.hdrEle)) {\n this.tbObj = (this.hdrEle && this.hdrEle.ej2_instances[0]);\n }\n this.tbObj.clicked = this.clickHandler.bind(this);\n this.tbObj.on('onItemsChanged', this.serverItemsChanged.bind(this));\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.bdrLine = select('.' + CLS_INDICATOR + '.' + CLS_IGNORE, this.element);\n var scrollCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrollCnt)) {\n scrollCnt.insertBefore(this.bdrLine, scrollCnt.firstElementChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (this.loadOn === 'Demand') {\n var id = this.setActiveContent();\n this.triggerAnimation(id, false);\n }\n this.initRender = false;\n this.renderComplete();\n };\n Tab.prototype.setActiveContent = function () {\n var id = CLS_ITEM + this.tabId + '_' + this.selectedItem;\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (!isNOU(item)) {\n item.classList.add(CLS_ACTIVE);\n }\n return id;\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-selected': 'false' }\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { 'aria-label': 'tab-header' });\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n _this.lastIndex = ((tbCount === 0) ? i : ((_this.isReplace) ? (index + i) : (_this.lastIndex + 1)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.updateOrientationAttribute = function () {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var newCnt;\n if (!this.isServerRendered || (this.isServerRendered && this.loadOn !== 'Dynamic')) {\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n }\n else {\n newCnt = this.cntEle.firstElementChild;\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n if (this.initRender || value === false || this.animation === {} || isNOU(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.select(trgIndex);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.serverChangeOrientation = function (newProp, oldProp) {\n this.setOrientation(newProp, this.hdrEle);\n removeClass([this.element], [CLS_VTAB]);\n var newValue = newProp === 'Left' || newProp === 'Right';\n var oldValue = oldProp === 'Left' || oldProp === 'Right';\n if (newValue !== oldValue) {\n this.changeToolbarOrientation();\n }\n if (this.isVertical()) {\n addClass([this.element], [CLS_VTAB]);\n }\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n setStyle(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (trg === null) {\n return;\n }\n if (this.isServerRendered && trg.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(trg);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var bar_1 = select('.' + CLS_INDICATOR, this.element);\n setStyle(bar_1, { 'top': trg.offsetHeight + trg.offsetTop + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (this.isServerRendered && trg) {\n value = parseInt(trg.getAttribute('data-index'), 10);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n var prev = this.tbItem[this.prevIndex];\n if (!isNOU(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n this.tbItem[this.prevIndex].setAttribute('aria-selected', 'false');\n trg.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else if (!this.isServerRendered || (this.isServerRendered && this.loadOn === 'Init')) {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n trg.firstElementChild.focus();\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.contentReady = function () {\n var id = this.setActiveContent();\n this.triggerAnimation(id, this.enableAnimation);\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n var items = tabHeader.querySelectorAll('.' + CLS_TB_ITEM);\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (this.isServerRendered && !isNOU(trgParent)) {\n if (parseInt(trgParent.getAttribute('data-index'), 10) !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n else if (!isNOU(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.select(trgIndex, args.originalEvent);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (e.originalEvent && this.isNested) {\n e.originalEvent.stopPropagation();\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshActElePosition = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var oldVal = Object(oldProp.items[index])[property];\n var newVal = Object(newProp.items[index])[property];\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + index, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isReact && typeof newVal === 'object') {\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (property === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isRect) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n var x = _this.cloneElement.getBoundingClientRect().left;\n var y = _this.cloneElement.getBoundingClientRect().top;\n var ele = document.elementFromPoint(x, y);\n dropItem = closest(ele, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(dropItem, this.dragItem);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.select(_this.droppedIndex);\n }\n }\n });\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n var itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) ||\n isNOU(textValue_1) || (textValue_1.length === 0) && isNOU(item.header.iconCss))) {\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n _this.items.splice(index, 1);\n _this.itemIndexArray.splice(index, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n if (!this.isServerRendered && this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}.\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n };\n Tab.prototype.selectingContent = function (args) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n }\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n if (!this.isServerRendered) {\n this.evalOnPropertyChangeItems(newProp, oldProp);\n }\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n if (!this.isServerRendered) {\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n }\n break;\n case 'headerPlacement':\n if (this.isServerRendered) {\n this.serverChangeOrientation(newProp.headerPlacement, oldProp.headerPlacement);\n }\n else {\n this.changeOrientation(newProp.headerPlacement);\n }\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n this.select(this.selectedItem);\n }\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var wrapAtt = (item.disabled) ? {} : { tabIndex: '-1' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var id = element.id;\n var num = (id.indexOf('_'));\n var index = parseInt(id.substring(num + 1), 10);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index,\n attrs: {\n role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index,\n 'aria-disabled': 'false', 'aria-selected': 'true'\n }\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var wrap = this.createElement('div', { className: CLS_WRAP, innerHTML: conte, attrs: { tabIndex: '-1' } });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'tabItems': 'tabItem' };\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TabComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TabComponent;\n}(Tab));\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n content: 'e-content',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n *
    \n *
      \n *
    • Favorite
    • \n *
    • Documents
    • \n *
    • Downloads
    • \n *
    \n *
    \n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.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 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = 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 ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' e-but-back',\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'option', listRole: 'presentation', itemText: '',\n groupItemRole: 'group', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData = void 0;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n args.item.setAttribute('aria-selected', 'true');\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n liElement.setAttribute('aria-selected', checked ? 'true' : 'false');\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.clickHandler = function (e) {\n var target = e.target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n }\n }\n else {\n this.setSelectLI(li, e);\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n if (this.selectedItems) {\n (this.selectedItems.item).setAttribute('aria-selected', 'false');\n }\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n this.spaceKeyHandler(e);\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n var activeElement = this.curUL.querySelector('[aria-selected = true]');\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (activeElement && !this.showCheckBox) {\n activeElement.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n this.touchModule.destroy();\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.setAttribute('aria-selected', 'false');\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n li.classList.add(classNames.focused);\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n // eslint-disable-next-line\n { item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs);\n this.selectedLI = li;\n this.renderSubList(li);\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = \n // eslint-disable-next-line\n getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[column]) &&\n this.fields[column] !==\n ListBase.defaultMappedFields[column]\n && columns.indexOf(this.fields[column]) === -1) {\n columns.push(this.fields[column]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy)), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy));\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, listViewComponent);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('aria-selected', 'false');\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n // eslint-disable-next-line\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n if (this.isReact) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n // eslint-disable-next-line\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { role: 'list', tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter(function (css) { return css; }));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n // eslint-disable-next-line\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked)) {\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n // eslint-disable-next-line\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n // eslint-disable-next-line\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n // eslint-disable-next-line\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n // eslint-disable-next-line\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n */\n ListView.prototype.addItem = function (data, fields) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource.push(data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n var isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n // eslint-disable-next-line\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * as React from 'react';\nimport { ListView } from '@syncfusion/ej2-lists';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents ListView component for React\n * ```\n * \n * ```\n */\nvar ListViewComponent = /** @class */ (function (_super) {\n __extends(ListViewComponent, _super);\n function ListViewComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ListViewComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ListViewComponent;\n}(ListView));\nexport { ListViewComponent };\napplyMixins(ListViewComponent, [ComponentBase, React.Component]);\n"],"sourceRoot":""}